目录
2.1 C语言的一个简单实例
2.2 实例说明
- 第一遍 快速简介 C程序包含一个或多个函数,它们是C程序的基本模块。
- 第二遍 程序细节
- 一、#include 指示和头文件
- C编译器要在编译前对源代码做一些准备工作:这称为 预处理。#include是C预处理器指令
- 在C世界中,出现在文件顶部的信息集合为头,C实现通常有许多头文件。stdio.h全称是标准输入输出头文件。
头文件中包括了建立最终的可执行程序时编译器需要用到的信息
。例如,可以定义变量,或者说明函数名以及该函数如何使用。例子中调用的printf函数的实现在C库中,包含的stdio.h文件中有函数printf、scanf的函数原型,编译时才能通过。编译器的链接部分负责找到您需要的库代码。头文件指引编译器把您的程序正确地组合在一起。
- 二、main()函数
- 三、注释
- 四、花括号,程序体和代码块
- 五、声明
- int num 单词int是C语言的一个关键字,它代表C中最基本的一个数据类型。num是一个标识符,也就是您为一个变量、函数或其它实体所选的名字。该声明把一个特殊的标识符和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型(即数据类型)。
内存分配空间的基本信息是空间地址,空间长度。数据类型决定了空间长度,取地址符&获得空间地址
。 - C99标准允许一个标识符最多可以有63个字符,除了外部标识符,后者只识别31个字符。实际上您使用的字符数量可以超过规定的最大值,但是编译器不会识别额外的字符。
- 标识符可使用的字符有小写字母、大写字母、数字和下划线(_)。第一个字符必须是字母或者下划线。操作系统和C库通常使用以一个或两个下划线开始的名字,因此最好避免使用这种用法。这样的标识符都是保留的,也就是说使用它们虽然不是语法错误,但是会导致名字混乱。
- C语言的名字是区分大小写的。
- 附录B的“参考资料7:扩展的字符支持”
- int num 单词int是C语言的一个关键字,它代表C中最基本的一个数据类型。num是一个标识符,也就是您为一个变量、函数或其它实体所选的名字。该声明把一个特殊的标识符和计算机内存中的一个特殊的位置联系起来,同时确定了该位置存储的信息类型(即数据类型)。
- 六、赋值
- num=1;以后还可以给num赋另一个值,这就是把num称为变量的原因。
- 七、printf()函数
- “\n”是转义字符。转义字符通常用于代表难于表达的或无法键入的字符。
- “%d”是占位符。%告诉程序把一个变量在这个位置输出,d告诉程序将输出变量的格式,d表示输出一个十进制整数变量。
- 八、Return语句
- 一、#include 指示和头文件
2.3 一个简单程序的结构
程序由一个或多个函数组成,其中必须有一个名为main()的函数。函数的描述由函数头和函数体组成。函数头包括预处理语句和函数名。可以通过圆括号识别一个函数名。而函数体位于花括号中并由一系列语句组成,每个语句以一个分号结束。
以前分析复杂的指针和typedef构造的别名时,总是判断不清楚,就是忽略这句话“可以通过圆括号识别一个函数名”
。
2.4 使程序可读的技巧
2.5 更进一步
2.6 多个函数
- void butler(void);这是函数原型。C90标准添加了原型。以前的编译器可能并不认识它们。原型是一种声明形式,用于告诉编译器您正在用一个特殊的函数。它也指明了函数的属性。
- 早期的C支持一种形式更为有限的函数声明,仅指定函数的返回类型而省略对参数的描述。形如:void butler(); 这种形式会逐渐淘汰,不要使用。
2.7 调试
- 2.7.1 语法错误 编译器能够识别
- 2.7.2 语义错误 属于程序逻辑错误,编译器无法识别。逐行检查变量值查找错误。这种方法很笨,简单的程序可以用用。
- 2.7.3 程序状态
程序状态是指在程序执行过程中的给定点上所有变量值的集合
。- 另一种查找语义错误的方法:在程序的几个关键点加入额外的printf()语句监视所选变量的值。
- 检查程序状态的第三种方法:使用调试器。调试器是一种程序,让您能够一步一步地运行另外一个程序并检查该程序的变量值。
2.8 关键字和保留标识符
2.9 关键概念
- 程序是您希望计算机采取何种行为的描述。
- 编译器负责完成把您的描述转换成底层机器语言的细节工作。由于编译器不具有真正的智能,所以必须把您对程序的描述用编译器的术语表达出来。这些术语就是C标准所设置的格式规则。
- 程序员的工作就是在一个编译器(由C标准指导)能成功处理的框架内表达出您关于程序应采取何种行为的想法。
2.12 编程练习
我有一些C基础,只是没系统学,这章练习太简单,不写代码了。如果是初学者,根据我学习汇编的经验,再简单都要写,代码看的懂和写的出是两回事,关键就在写。