1.1、C通过编译和链接两个步骤来实现将源代码转换为可执行文件的过程,编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。
1.2、源代码转换为机器语言代码并把结果放在目标代码文件中,目标代码文件缺失启动代码和库函数代码,启动代码充当程序和OS之间的接口。
1.3、链接器的作用:将目标代码、系统的标准启动代码和库代码合并成一个文件——可执行文件。
2.1、int是main()函数的返回类型,返回给OS。
2.2、给变量命名可以用小写字母、大写字母、数字和下划线,而且,名称的第一个字符必须是字符或者下划线,不能是数字。
2.3、提高程序可读性的四个技巧:1、选择有意义的函数名。2、写注释。3、在函数中用空行分隔概念上的多个部分。4、每条语句各占一行。
3.1、转换说明:十进制%d,八进制%o,十六进制%x,要显示各进制的前缀o,ox和oX,分别使用%#o,%#x,%#X。
3.2、C99标准添加了一种新的浮点型常量格式——P计数法,即在十六进制数前加上十六进制前缀(ox或者oX),用p和P分别替代e和E,用2的幂代替10的幂,如:oxa.1fp10。
3.3、printf()何时把输出发送到屏幕上——缓冲区满、遇到换行符或者需要输入的时候,也可以使用fflush()函数刷新缓冲区(如何判断缓冲区已满???)。
4.1、C语言用空(null)字符标记字符串的结束,空字符不是数字0,它是非打印字符,其ASCII码值是0。
4.2、scanf(%s)在遇到第一个空白(空格、制表符或者换行符)时就不再读取输入。
4.3、sizeof使用圆括号的时机取决于运算对象是类型还是特定量。是类型时,圆括号必不可少,是特定量时,可有可无。
4.4、C90标准新增了const关键字,用于限定一个变量为只读。
4.5、类型转换表明函数应该读取多少个字节而不是读取该参数存储字节的大小(只是按照对应的转换说明来解释而已跟存储大小无关)。
4.6、printf()的返回值是打印的字符个数(针对所有字符数,包括空格和换行符),如果输出有错误,则返回一个负值。
4.7、给字符串断行有三种方法:1、用多个printf()语句。2、用反斜杠(\)和Enter(或Return)键组合来断行。3、用字符串。
4.8、scanf()使用空白(换行符、制表符和空格)把输入分成多个字段,%c转换说明例外。
4.9、疑问:为什么double类型的数据用printf()已%f格式打印的输出是float类型?
4.10、scanf()函数返回成功读取的项数,如果没有读取任何项,scanf()返回0,当scanf()检测到“文件结尾”时,返回EOF。
4.11、printf()的*修饰符可以通过程序来指定字段宽度,如转换说明%*d,那么参数列表中应包含*和d对应的值,但是对于scanf(),把*放在%和转行字符之间时,会使得scanf()跳出相应的输出项,在程序读取文件中特定列的内容时,这项跳过功能很有用。