数组:
只有初始化定义才能 arr = { 0 };
结构体:
typedef struct namex { }name; 会创建一个name类型的结构体,也可用name进行类型定义,但是不可以定义指针,仍需要用struct name* 定义 。
重要小结:结构体中的只指向自身的指针需用 struct COMPLEX* 定义。
typedef struct SELF_REF { ///直到结尾才会完成定义,中途无法使用定义。 int a; SELF_REF* b;/// should be" struct SELF_REF* b; " int c; }SELF_REF;
COMPLEX* -> member name
struct COMPLEX{ int a; char b; char c }; 最大限度地节省空间。
作为函数参数的结构:
将函数名传入函数的参数中可以得到成功的结果,但是非常的低效,因为C会在调用过程中先拷贝一份。以下是一个更好的方案:
void fun (COMPLEX* C){ C -> member_name;///以这种形式访问并使用。 } fun(&COMPLEXTYPE);///以这种形式调用函数。 为了防止结构体被修改,也可: void fun (COMPLEX const *C) 当要多次使用输入的指针访问结构体时,可以定义为寄存器变量: void fun (register COMPLEX const *C)
函数内不可定义函数。