通过下面这个简单的C语言程序来初步了解C语言程序的细节和结构:
#includeint main(void) {int num;/*定义一个名为num的变量*/num=1;printf("I am a simple ");printf("computer.\n");printf("My favorite number is %d because it is first.\n",num);return 0;}
运行结果:
I am a simple computer.
My favorite number is 1 because it is first.
2.1 示例细节解释
2.1.1 #include指令和头文件
#include是一条C预处理器指令,即这条指令使编译器在编译前对源代码进行预处理。
stdio.h(标准输入/输出头文件)是一种头文件,包含了输入输出函数的声明内容;
以上的指令具体作用是将该头文件的所有内容都输入在该行的位置,相当于拷贝粘贴。
当然,函数的实际代码(定义部分)在库文件中,是链接时的操作,不要混淆
2.1.2 main()函数
int main(void)是一种函数, main是函数名,是预定义标识符的一种。
int表示main()函数的返回数据类型,是整数;返回值将返回给操作系统;
()是函数的标志,括号中的void表示传入函数的信息为空类型。
2.1.3 注释
/**/是程序注释,//也可用作注释。
2.1.4 花括号
{}用于标记函数体的开始和结束,也可用于将多条语句合并成块。
2.1.5 声明
int num;是声明语句。
int是一种数据类型关键字,num是自定义标识符,标识符可以是一个变量或函数的名称;
该声明,意为声称了一个标识符为num的变量,且该变量的数据类型为int型(整型)。
自定义标识符命名规则:
可由小写字母,大写字母,数字,下划线组成;开头必须是字母或下划线。
2.1.6 赋值
num=1;为赋值表达式语句,即将右值赋值给变量num。
声明时,编译器在计算机内存中为变量num预留了空间,赋值时,把值存储在之前预留的位置。
2.1.7 printf()函数
printf(“I am a simple “);
printf(“computer.\n”);
printf(“My favorite number is %d because it is first.\n”,num);
printf()是一个函数,括号中包含的信息是实际参数。(实际参数是传递给函数的特定值,形式参数是函数中用于存储值的变量);
%d是占位符,表示将num以整型打印。
2.1.8 return语句
return 0;是一条控制语句,表示返回0值。
2.2 程序的结构
- 程序由一个以上的函数组成(必须由main()函数),函数是程序的基本结构。
- 函数由函数头和函数体组成:
函数头:
int main(void)
- 函数头由函数名,传入函数的信息类型,函数返回类型组成;
函数体:
{
int num;/声明/
num=1;/赋值表达式语句/
printf(“I am a simple “);/函数表达式语句/
printf(“computer.\n”);/函数表达式语句/
printf(“My favorite number is %d because it is first.\n”,num);/函数表达式语句/
return 0;/控制语句/
}
- 函数体由若干条声明和各种语句组成。
大多数语句都以分号结束。
2.3 提高程序可读性的技巧
- 标识符有意义
- 写注释
- 空行分隔开不同功能分区
- 一条语句独占一行
2.4 调试的方法
语法错误
- 编译器通常能检测出大多数语法错误,根据编译器的报错信息来调试
- 观察法()
语义错误(编译器无法检出)
- 逐步跟踪程序,记录变量,自行模拟执行
- 关键位置插入printf()
- 使用调试器
2.5 易混点总结
2.5.1 关键字分类:
- 数据类型关键字
- 控制语句关键字
- 存储类型关键字
- 其他
2.5.2 标识符
标识符包括预定义标识符和自定义标识符;
预定义标识符包含库函数名(如printf)和预编译命令名(如include、define);
自定义标识符即如前所述的num,是程序员自行命名的标识符。
2.5.3 程序的基本结构
- 程序由函数构成;
- 函数由函数头和函数体组成;
- 函数体由声明和各种语句组成;
- 而这些语句和声明则由关键字,标识符,运算符和数据共同组成。