以前学习过C语言,主要是看谭浩强的那本《C语言程序设计》,看过几遍,很经典,但不深入,我一直有种感觉,我C语言学的不怎么好,所以接着看《C和指针》,边看边把里面的知识点和总结记录在我的博客里,以供自己以后可以查看。
编写代码要要遵守一定的约定,要清晰的显示程序的结构,但更重要的的是要有注释,可以告诉读者程序做了什么以及怎么功能的。
注释可以移/*开始,以*/结束。
从逻辑上删除一段C代码可以用:
#if 0
statements(代码内容)
#endif
预处理指令由预处理器解释的,预处理器通过读入源代码,根据预处理指令对其修改,把修改后的源代码给编译器。
函数原型中的参数的名字并非必须的,给出参数名的目的是提示他们的作用
如:int read_column_numbers( int columns[], int max );
可以写成int read_column_numbers( int , int );
当参数被声明为const,表示函数将不会修改函数调用者所传递的这个参数。
在函数(包括main函数)内部声明的变量为该函数的局部变量。局部变量可以作为参数传递给其他函数。
所有传递给函数的参数都是按值传递的(指针和数组名作为参数有点特别,会被改变)。
C语言中不存在“string"的数据类型。
scanf函数是从标准输入中读取字符并根据格式字符串对他们进行转换,返回值是函数成功转换并存储于参数中的值的个数。
getchar 函数是从标准输入读取一个字符并返回它的值。如果输入中不再存有任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾。
fgets函数
原型是char *fgets(char *s, int n, FILE *stream);
功能:
从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否则返回NULL。
形参注释:
*s:结果数据的首地址;n:一次读入n-1个数据块的长度,其默认值为1k,即1024; stream:文件指针
编写代码要要遵守一定的约定,要清晰的显示程序的结构,但更重要的的是要有注释,可以告诉读者程序做了什么以及怎么功能的。
注释可以移/*开始,以*/结束。
从逻辑上删除一段C代码可以用:
#if 0
statements(代码内容)
#endif
预处理指令由预处理器解释的,预处理器通过读入源代码,根据预处理指令对其修改,把修改后的源代码给编译器。
函数原型中的参数的名字并非必须的,给出参数名的目的是提示他们的作用
如:int read_column_numbers( int columns[], int max );
可以写成int read_column_numbers( int , int );
当参数被声明为const,表示函数将不会修改函数调用者所传递的这个参数。
在函数(包括main函数)内部声明的变量为该函数的局部变量。局部变量可以作为参数传递给其他函数。
所有传递给函数的参数都是按值传递的(指针和数组名作为参数有点特别,会被改变)。
C语言中不存在“string"的数据类型。
scanf函数是从标准输入中读取字符并根据格式字符串对他们进行转换,返回值是函数成功转换并存储于参数中的值的个数。
getchar 函数是从标准输入读取一个字符并返回它的值。如果输入中不再存有任何字符,函数就会返回常量EOF(在stdio.h中定义),用于提示文件的结尾。
fgets函数
原型是char *fgets(char *s, int n, FILE *stream);
功能:
从文件指针stream中读取n-1个字符,存到以s为起始地址的空间里,直到读完一行,如果成功则返回s的指针,否则返回NULL。
形参注释:
*s:结果数据的首地址;n:一次读入n-1个数据块的长度,其默认值为1k,即1024; stream:文件指针