struct、typedef和指针那些扯不清的关系
c语言指针是最不好理解的也是公认的c语言难点,如果再把指针和c/c++有不同标准的struct、typedef混在一起,你还能理清他们的关系吗?!
0x00 定义一个结构体
定义一个结构体的形式通常是这样的:
struct 结构名{ 成员表列 };
例子:
struct str{ char name; int num; };
定义完一个结构体之后还不能使用,因为你只是定义了一个类似int的程序变量,只是自己创造了一个变量类型,现在你要定义一个变量:
struct str s1,s2;
当然,你也可以在定义结构体的时候,就定义好结构体变量,这样的话,这个变量就是全局变量了。
struct str{ char name; int num; } s1,s2;
也就是说,你可以吧struct str这个字符串理解为int,他们在编译器中是一个意思,怎么使用int就怎么使用struct str就可以了。比如,在初始化变量时,一般会用到;
int a = 1;
所以,定义结构体时,就可以这么写:
struct str s = {"li",1001};
正如上面说的那样,定义结构体的时候就可以定义结构体变量,所以也可以顺势初始化结构体变量,就像这样:
struct str{ char name; int num; } s1 = {"li",1001};
0x01 定义指针
0x02 typedef的使用
0x03 指针+结构体?
0x04 typedef+结构体?
0x05 指针+typedef?
0x06 究极集合!
struct、typedef和指针那些扯不清的关系