这是我读《C和指针》第1、2章做的笔记,比较基础,主要内容是C语言我以前没有注意到的地方,希望也能对你有所帮助
-
注释
在有些语言中,注释有时用于把一段代码“注释掉”,也就是使这段代码在程序中不起作用,但并不将其真正从源文件中删除。如果你试图在一段C语言代码的首尾分别加上/*和*/符号来“注释掉”这段代码,你不一定能如愿。如果这段代码内部原先就有注释存在,这样做就会出问题。要从逻辑上删除一段C代码,更好的办法是使用#if指令:
-
预处理指令
预处理指令有两种:#include XXX 和 #define XXX:
预处理器读入源代码,根据预处理指令对其进行修改,然后把修改过的源代码递交给编译器。
在例子中,预处理器用名叫stdio.h的库函数头文件的内容替换第1条#include指令语句,其结果就仿佛是stdio.h的内容被逐字写到源文件的那个位置。第2、3条指令的功能类似,只是它们所替换的头文件分别是stdlib.h和string.h.
stdio.h头文件使我们可以访问标准I/O库中的函数,这组函数用于执行输入和输出。
stdlib.h定义了EXIT_SUCCESS和EXIT_FAILURE符号。
string.h头文件提供了用来操纵字符串的函数。
-
数组参数
在C语言中,数组参数是以引用(reference)形式进行传递的,也就是传址调用,而标量和常量则是按值(value)传递的。
在函数中对标量参数的任何修改都会在函数返回时丢失,因此,被调用函数无法修改调用函数以传值形式传递给它的参数。然而,当被调用函数修改数组参数的其中一个元素时,调用函数所传递的数组就会被实际地修改。
-
gets函数
gets函数从标准输入读取一行文本并把它存储于作为参数传递给它的数组中。
一行输入由一串字符组成,以一个换行符(newline)结尾。gets函数丢弃换行符,并在该行的末尾存储一个NUL字节(一个NUL字节是指字节模式为全0的字节,类似'\0'这样的字符常量)。然后,gets函数返回一个非NULL值,表示该行已被成功读取。当gets函数被调用但事实上不存在输入行时,它就返回NULL值,表示它到达了输入的末尾(文件尾)。
-
字符串常量
尽管C语言并不存在"string"数据类型,但在整个语言中,存在一项约定:字符串就是一串以NUL字节结尾的字符。NUL是作为字符串终止符,它本身并不被看作是字符串的一部分。
字符串常量就是源程序中被双引号括起来的一串字符。例如,字符串常量:"Hello"
在内存中占据6个字节的空间,按顺序分别是H,e、l、l、o和NUL
参考:C和指针(第二版) 人民邮电出版社