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和指针那些扯不清的关系

https://blog.zscself.com/posts/dd7d0db5/

作者

F!redent

发布于

2014-10-14

更新于

2024-01-30

许可协议

CC BY-NC-SA 4.0

评论