C语言的基本概念
1. 编写一个简单的C程序
-
# include
int main() { printf("Hello World!"); return 0; //表明程序终止时,会向操作系统返回值0 }
2. 编译和链接
-
预处理
- 首先、程序会交给预处理器。预处理器执行以#开头的命令
- 编译
- 修改后的程序现在可以进入编译器了。编译器会把程序翻译成机器指令(即目标代码)。然而这样的程序还是不可以执行的。
- 链接
- 最后一个步骤中,编译器把由编译器产生的目标代码和所需的其他代码整合到一起,这样最后产生了可执行的程序,这些附加代码包括程序中用到的库函数。
3. 简单程序的一般形式
3.1 指令
- 在编译C程序之前,预处理器会首先对其进行编辑。我们把预处理执行的命令称为指令。
# include <stdio.h>
- 这条指令说明,在编译前把 #include
中的信息“包含”到程序中去。 包含C标准输入/输出库的信息。C语言中拥有大量类似于 ,每个头中都包含一些标准库的内容。
3.2 函数
- 函数是构建程序的构建块。事实上,C函数就是函数的集合。
函数分两大类:一类是程序员编写的函数,另一类是则是作为C语言提供的一些函数,我们把后者称为库函数。 - 一个C程序可以包含多个函数,但只有主函数Main是必须有的。
- 如果main是一个函数,那么他会返回一个值吗?是的,他会在程序结束向操作系统返回一个状态码。
# include <stdio.h>
int main (void)
{
printf("你还有的努力么?这是一个问题。");
return 0;
}
-
main前面的int表明该函数将返回一个整数值。圆括号中的void表明main函数没有参数。
-
return 0;
- 一是使main函数终止;
- 二是指出main函数的返回值为0。
- 如果main函数的末尾没有return语句,程序仍然能终止。但是,许多编译器会产生一个警告信息,因为函数应该返回一个整数。
3.3 语句
- 语句是程序运行时执行的命令。
- C语言规定好每条语句都要以分号结尾。
4. 注释
- / / 注释多行
- // 注释单行
- /* 后面代码全注释
5. 变量和赋值
大多数程序在产生输出之前往往需要执行一系列的计算,因此需要程序在执行过程中有一种临时存储数据的方法。和大多数编程语言一样,C语言中的这类存储单元被称为变量。
5.1 类型
- 每一个变量都必须有一个类型。类型用来说明变量所存储的数据的种类。
- 因为类型会影响变量的存储方式以及允许对变量进行的操作,所以选择合适的类型是非常关键的。
5.2 声明
- 在使用变量之前必须对其进行声明。为了声明变量,首先要指定变量的类型,然后说明变量的名字。
int height; //整形变量
float profit; //浮点型变量
int height,length,width; //同类型可进行声明合并
- 当main函数包含声明时,必须把声明放置在语句之前。
int main(void)
{
声明;
语句;
}
5.3 赋值
变量通过赋值的方式获取值。
height = 8;
length = 12;
- 8,12称为常量,将常量赋给变量height,length。
5.4 显示变量的值
printf(" H : %d\n",H);
- 占位符%d用来指明在显示过程中变量height的值的显示位置。
- %d仅用于int型变量
- %f用于float型变量,若要显示小数点后显示p位数可以用%.pf
5.5 初始化
当程序开始执行时,某些变量会自动设置为0;而大多数变量不会,或者在表达式中使用该变量,可能会得到某些不可预知的结果,如2568,-30891等没有意义的数值。
- 在变量声明中加入初始化,也可以采用赋值。
5.6 显示表达式的值
printf的功能不局限于显示变量中储存的数,它可以显示任意数值表达式的值。
- C语言的一个通用原则
- 在任何需要数值的地方,都可以使用具有相同类型的表达式。
5.7读入输入
scanf函数需要知道将获得的输入数据的格式。
printf函数需要知道输出数据的显示格式。
6.定义常量的名字
宏定义
- 当对程序进行编译时,预处理器会把每一个宏替换为其代表的值。
- 宏还可以用来定义表达式。
- 宏的名字只用了大写字母。这是大多数C程序员遵循的规范,但并不是C语言本身的要求。
给常量命名
- 尽量贴近能够表达所需值的含义
7.标识符
关键词(有些关键词是C99新增的,还有一些是C1X新增的)
auto | extern | short | while |
---|---|---|---|
break | float | signed | _Alignas |
case | for | sizeof | _Alignof |
char | goto | static | _Atomic |
const | if | struct | _Bool |
continue | inline | switch | _Complex |
default | int | typedef | _Generic |
do | long | union | _Imaginary |
double | register | unsigned | _Noreturn |
else | restrict | void | _Static_assert |
enum | return | volatile | _Thread_local |
- 标识符可以含有字母、数字、下划线,但必须是以字母或者下划线开头
- C语言是区分大小写的,许多程序员会遵循在标识符中只使用小写字母的规范(宏命名除外)
- 为使名字清晰,必要时刻加入下划线
- 关键字不能作为标识符来使用
8. C程序的书写规范
- 语句可以分开放在任意多行内。
- 记号之间的空格使我们更容易区分记号,可以在每个运算符的前后都放上一个空格。
- 缩进有助于轻松识别程序嵌套
- 空行可以把程序划分为逻辑单元,更容易辨别程序的结构。
- 适当加上注释,有助于解读
0 条评论