只是摘要一些自己不懂的或认为重要的。
- C并不具备任何输入/输出语句;I/O是通过调用库函数实现的。C也不具备任何异常处理语句,它们也是通过调用库函数来完成的。
- 声明一个数组名其值为指针常量,并开辟指定的空间。声明指针变量,只为指针本身保留内存空间,不分配内存、且未被初始化指向现有的内存空间。
- 如果可以互换使用指针表达式和下标表达式;下标绝不会比指针更有效率,但指针有时会比下标更有效率。
- 效率并不是唯一的因素,通常代码的简洁度更为重要。
- 多维数组中,只有第一维可以缺省,其余几维必须显示写出其长度。
- 数组名的值大多数指向数组第1个元素的指针。有2个例外:sizeof和&返回一个指向数组的指针。
- 只要有可能,函数的指针形参都应该声明为const。防止函数修改所指向的指针。
- strlen()的返回值为无符号数,即绝不可能是负的,在if语句要注意。
- 结构体中,花括号右边声明创建变量,花括号左边的变量为标签没有创建变量。使用typedef创建结构体和结构标签几乎相同,区别为其花括号左边变量为类型名而不是结构标签。
- 预处理器:#argument 结构 由预处理器转换为字符串常量"argument"。##操作符用于把它两边的文本粘贴成同一个标识符。#undef导致一个名字的原来定义被忽略。#line允许告诉编译器下一行输入的行号,可选内容告诉编译器输入源文件的名字。#progma例如可以想一个函数如果内联的汇编代码。