1.1简介
1.1.1空白和注释
空行
- 将程序的不同部分分割开来。
- 制表符(tab)用于缩进语句,更好的显示程序的结构等等。
- 遵守一些约定可以使代码更加容易阅读和修改。
注释
- 告诉读者程序能做些什么以及怎样做。
- 注释以/*开始,以/结束。
- 注释不能嵌套。
- 从逻辑上删除一段代码,采用注释的方式注释掉一段代码不是一个好主意,最好的办法是使用#if指令。这是一种更加安全的办法,即使这段代码原先存在注释也无妨。例如:
#if 0
statements
#endif
1.1.2预处理指令
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_COLS 20
#define MAX_INPUT 1000
- 以上五行称为预处理指令
- 预处理指令由预处理器解释
- 预处理器读入源代码,根据预处理指令对其修改,然后把修改过的源代码递交给编译器。
- 在上述例子中,预处理器用名叫stdio.h的库函数头文件的内容替换第一条#include指令语句,其结果就仿佛是stdio.h中的中的内容被逐字写到源文件的那个位置。
- #define 后面的名字出现在源文件的任何位置时,它会被替换为定义的值。
1.1.3main函数
- C语言中处理字符串是常见任务之一,但它不存在string 数据类型,但在整个语言中存在一个约定,字符串就是一串以NULL字节结尾的字符,NULL是字符串终止符,它本身不被看做字符串的一部分。
- 字符串常量 就是被双引号括起来的一串字符,例如“Hello”在内存中占据6个字节的空间,分别是H.e.l.l.o.NULL
1.1.4 read_column_numbers()函数
int
read_column_numbers( int columns[], int max )
{
}
- 这个函数的数组参数中,并未指定数组长度,这个格式是正确的。因为不论调用函数的程序传递给它的数组参数长度是多少,这个函数都将招收不误,这是一个伟大的特性,它允许单个函数操作任意长度的一维数组。这个特性不利的一面是函数没法知道该数组的长度,如果确实需要知道数组的长度,它的值必须单独作为一个参数传递给函数。
int n_columns
int columns[MAX_CLS];
n_columns = read_column_numbers( columns, MAX_CLS );
- C语言中,实际参数的名字和形式参数的名字并没有什么关系,两者可以相同,也可以不同。
int num = 0;
int ch;
- 他们是函数的局部变量,第一个变量在声明时被初始化为0,但第二个变量并没有被初始化,它的初始值将是一个不可预料的值,也就是垃圾,在这个函数里面并没事,因为函数对它执行的第一个操作就是赋值。
1.1.5 rearrange()函数
1.2补充说明
1.3编译
1.4总结
1.5警告的总结
1.6编程提示的总结