结构可以整体拷贝、整体赋值(包括函数传参和函数返回值),访问成员,通过&取地址。
初始化:赋值(值传递,指针)或常量成员值列表。
注意优先级:
++p->len p->len,++len
*p->str++ p->str *str str++
*p++->str p->str *str p++
结构成员、结构标记和普通变量可以采用相同的名字,因为上下文分析可以区分
结构包含自身实例是非法的,但是包含自身指针是合法的。
C语言声明结构指针实例:
struct tnode *talloc(void){
return(struct tnode *) malloc(sizeof(struct tnode));
}
如何得到数组的长度?即使数组的类型改变了,也不需要更改程序。
#define NKEYS (sizeof keytab / sizeofkeytab[0])
注意:#if中不能使用sizeof,因为#if是预处理器执行的,但是预处理器对类型名不进行分析(词法分析之后才有)。但是预处理器不计算#define语句中的表达式,所以可以使用sizeof。