1.ARM 芯片对于超过4个参数的处理。
2.结构体字节对齐。
3.空结构体所占字节数为1。
4.C99中,结构中的最后一个元素可以使未知大小的数组,即为头型数组,但是结构体的柔性数组前面必须至少有一个其他成员包含一个大小可变的数组。
5.C语言结构体里面也可以包含函数,如同类中有方法一样,但是不能通过直接放过一个函数进去,需要通过函数指针的方式,同时,关于类的构造函数与析构函数C语言表示是没有的。
6.编译器用空格替换注释。
7.的优先级高于*,->操作符。
8.[]高于*。
9.函数()高于*。
10.== 和 !=高于位操作。
11.==和!=高于赋值符。
12.算术运算符高于位移运算符。
13.逗号运算符在所有运算符中优先级最低。
14\作为连接符使用时,本行后面不能再接任何字符,空格都不行。
15.函数类型本身没有类型,只有函数的返回值才有类型。
16.尽量使用编译器而不使用预处理。
17.怎么理解复杂语句定义,使用“右左法则”:
从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读方向。
括号内分析完就跳出括号,还是先右后做的顺序。
依此循环。
typedef不能与auto/extern/static/register连用,只可以与const连用,因为const是用来改变类型的,别的关键字是用来说明存储类别的。
typedef char* PSTR;
int mystrcmp(const PSTR, const PSTR);
那么const PSTR实际上相当于 const char *还是 char *const?
--相当于char *const
int *(*a[5])(int,char *)
typedef int*(*pFun)(int,char *);
pfun a[5];
void (*b[10])(void(*)());
typedef void (*pFun1)();
typedef void (*pFun)(pFun1);
pFun b[10];
......