1.C语言中,编译针对的是单个源文件,链接针对的是整个项目。
2.头文件中不应该放置变量定义,否则会造成链接错误。头文件只应该放置类型定义、函数的声明以及变量的声明。
3.头文件中如果不加上#ifndef之类的预处理语句,很可能造成类型重复定义的编译期错误。
4.头文件中的函数声明是为了给编译器提供函数原型的参考,不是必须的。
5.指针包含两重信息:
a) 指针本身的value代表指向内存的起始位置
b) 指针的类型标示着指向内存的单位大小。
6.C语言的内存不具有属性,用什么类型的指针指向它,就把它解释为什么类型的数据。
7.交换两个变量的关键是传递它们的指针,例如T类型传递T*作为参数。
8.数组传参数时,一维数组例如int a[10] ,传递参数可以使用 int*;如果是二维数组int a[3][10],那么应该传递一维数组的指针 int (*a)[10].
9.二维数组int a[10][5] , a[ i ]等价于*(a+i),而a[ i ][ j ]等价于*(*(a + i) + j) 。
10.大小端问题:TCP传输,对于字符串不需要考虑大小端,对于int等需要考虑。总之就是对于以字节为逻辑单位的数据不需要考虑大小端。
11.函数指针,包含了两种信息,第一是函数的内存地址,第二是类型信息,包含函数的参数列表以及返回值。(在前面的文章中有简单介绍函数指针)