通过下面这个简单的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 程序的结构

  1. 程序由一个以上的函数组成(必须由main()函数),函数是程序的基本结构。
  2. 函数由函数头和函数体组成:

函数头:

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 提高程序可读性的技巧

  1. 标识符有意义
  2. 写注释
  3. 空行分隔开不同功能分区
  4. 一条语句独占一行

2.4 调试的方法

语法错误

  1. 编译器通常能检测出大多数语法错误,根据编译器的报错信息来调试
  2. 观察法()

语义错误(编译器无法检出)

  1. 逐步跟踪程序,记录变量,自行模拟执行
  2. 关键位置插入printf()
  3. 使用调试器

2.5 易混点总结

2.5.1 关键字分类:

  1. 数据类型关键字
  2. 控制语句关键字
  3. 存储类型关键字
  4. 其他

2.5.2 标识符

标识符包括预定义标识符自定义标识符
预定义标识符包含库函数名(如printf)和预编译命令名(如include、define);
自定义标识符即如前所述的num,是程序员自行命名的标识符。

2.5.3 程序的基本结构

  • 程序由函数构成;
  • 函数由函数头和函数体组成;
  • 函数体由声明和各种语句组成;
  • 而这些语句和声明则由关键字,标识符,运算符和数据共同组成。