原标题:【笔 记】C语言第一个程序的解析
学习一门新语言的惟一途径就是使用它来编程。对于初学者来说, 编写的第一个程序几乎都是相同的。
C语言是面向过程的语言,可以理解为一个函数调用另一个函数的语言,其中程序的入口是main函数。
今天我们来写一个简单的程序,编写C文件: 新建一个文本文件并重命名为XXX.c为后缀。
文件(XXX.c称源文件)
#include
/*一个简单的C程序*/
int main(){
int num;
num = 1;
printf("num=%dn",num);
return 0;
}
解析:
#include
预处理器指令包含了一个stdio.h的头文件stdio.h 是所有C语言编译包的一个标准部分提供了对关键字输入和输出的支持。
main() 总是第一个被调用 的函数是程序的入口 main之前的int 表示main函数结束后返回一个int 型的整数。
main之前也可以是void (空类型)无论是哪种返回类型,函数最后的,return 关键字后面的数据都要与他对应。
注释:
包含在/* */ 内 或是 //后的内容
#include
/**/ 多行注释 //单行注释
注释是为了便于理解程序
注:
/**/ 要配对使用 注释内容相当于一个空格,// 如果单行注释不需要在下一行继续本行的内容用换行符来折行 (c99)
顶级大括号{}不被其他大括号包含的大括号 {}将语句聚集到一个单元或代码块。
语句:
程序由多条语句构成
语句 每个独立的语句都由;来带表结束
语句一般由 关键字 标识符 运算符 声明数据等构成。
C语言程序中预留了32个英文单词做为C语言的关键字
return 程序的最后一个语句 返回的内容需要与main前数据类型一致 int型 的返回何值 有某些操作系统有具体的实际用途 return 会返回给操作系统 通知函数结束
基本的编写规范:
头文件书写格式:一行顶头(不缩格)进行书写 函数:函数行顶头(不缩格)书写 语句:一行只书写一条语句且不超过80列按层次进行缩进(tab)在合适的地方使用空格和空行提高程序的可读性 (逻辑单元的划分)。
-O 优化 能减少目标文件大小及执行时间等O1 O2..
-std=c89/-std=c99指定编译过程中遵循的版本 缺省情况下采用c89版本
程序调试:
编写完程序有可能出现一些程序的错误 通常叫做BUGS而发现和修正这些错误的过程叫调试(debugging)。
错误一般分为:
1 语法错误
2 语义错误
文件:
一个源程序文件的行数一般不超过500否则分割成若干个文件进行编写。
gcc的编译选项
-v 显示gcc 版本号和版权信息
-E只完成预处理指令的处理工作(文件包含 宏替换..)
-c只完成预处理和编译工作 生成.o文件 不连接
-S 生成汇编
-Wall 编译器检测到可能的错误时产生警告信息
-o用来指定新文件名称
编译原理
-E,-S,-c,-O
预处理:
主要是C语言编译器对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等。
编译:
C语言编译器会进行词法分析、语法分析(-fsyntax-only),优化阶段接着会把源代码翻译成中间语言,即汇编语言汇编:汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。
链接:
链接是处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息(一般是虚拟内存地址)的过程。链接又分为静态链接和动态链接。