C语言常见概念
什么是C语言
C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。
当前最新的 C 语言标准为 C18 ,在它之前的 C 语言标准有 C17、C11…C99 等。
TIOBE指数 - TIOBE 可以查看各种编程语言使用排名
编译器的选择
编译和链接
C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件,可执行文件才能执行。
C语言的代码通常是放在以 .c 为扩展名的文件中,要得到最终运行的可执行程序,中间要经过编译和链接2个过程
一个项目中可能含有多个源文件

每个 .c 源文件单独经过编译器处理生成相应的 .obj 目标文件,多个目标文件和库文件经过链接器处理生成对应的 .exe 可执行程序
编译器
常见的编译器如:msvc、clang、gcc、MinGW-w64
- Visual Studio 集成了MSVC
- Xcode 集成了clang(苹果电脑用的)
C语言项目
在一个C语言项目中,.c 为后缀的文件称为源文件,.h 为后缀的文件称为头文件。
简单的C语言程序结构
1 |
|
上面代码组成结构:
-
预处理器指令:如
#include和#define,在编译前由预处理器处理。- 头文件通常在程序的开头使用
#include指令包含。头文件提供了函数和库的声明,如标准输入输出库<stdio.h>、标准库<stdlib.h>等。它们定义了函数、宏、常量等使程序能够使用预定义的库函数。 - 系统头文件使用尖括号
<>,自定义头文件使用双引号"",两者的搜索路径不同。 - 示例:
#include <stdio.h>(系统头文件)、#include "myheader.h"(自定义头文件)
- 头文件通常在程序的开头使用
-
主函数:每个 C 程序都有且只有一个
main()函数,是程序的执行入口。不管有多少行代码,都是从
main函数开始执行的,main前面的int表示main函数执行结束的时候返回一个整型类型的值。所以在main函数的最后写return 0;(0表示程序正常退出,非0不正常)main函数是程序的入口main函数有且仅有一个- 即使一个项目有多个
.c文件,也只能有一个main函数
-
库函数调用:库函数
printf,实现了在屏幕上打印信息在使用库函数的时候需要包含头文件,比如:
printf函数就是需要包含stdio.h这个头文件
C语言中的关键字
C语言中有一批保留的名字的符号,比如:int , if , return , 这些符号被称为关键字。
- 关键字都有特殊意义
- 创建标识符时不能和关键字重复
- 不能自己创建关键字
常用的32个关键字:
1 | auto break case char const continue default do double else enum extern float for goto if |
字符和ASCII编码
键盘上可以敲出的各种字符,如,a,#,1等,这些符号都被称为字符,C语言中的字符是用单引号括起来的,如:‘a’,‘#’,‘1’。美国国家标准学会(ANSI)出台了一个标准 ASCII 编码,C语言就遵循了 ASCII 编码的方式。
字符串和\0
在C语言中使用双括号括起来的一串字符就被称为字符串,如:“abcdef”,就是一个字符串,在C语言中字符串的末尾隐藏放着一个 \0 字符,这个 \0 字符是字符串结束的标志

当使用 strlen() 计算字符串长度的时候,遇到 \0 的时候就自动停止了。
在C语言中可以把一个字符串放在一个字符数组中,可以通过下面的代码验证一下 \0 的功能。
1 |
|
输出结果如图

可以看到当打印 arr2 的时候后面出现了随机值且长度不对,这就是因为在末尾没有添加 \0 字符作为结束标志,在打印的时候没有停止。arr1 的打印结果和长度是正常的,就是因为 arr1 数组是使用字符串常量初始化的,数组中自动就有 \0 作为结束标志。而 arr3 中间手动输入 \0 则提前结束打印和计数,到 \0 就停止了。
常用转义字符
-
\':用于表示一个字符串内部的单引号 -
\":用于表示一个字符串内部的双引号 -
\\:用于表示一个反斜杠 -
\b:退格键,光标退回一个字符,但不删除字符 -
\n:换行符 -
\r:回车符,光标移到同一行的开头 -
\t:制表符,光标移到下一个水平制表位,通常是下一个4或8的倍数 -
\ddd:d d d表示1~3个八进制数字,如:\130表示字符X,\0表示 null 字符 -
\xdd:d d表示2个十六进制数字,如:\x30表示字符0

