结构体声明和初始化
Introduction
声明结构类型
声明struct person{...};
这个struct person起的作用就是一般声明中的int
例如:定义struct person类型的变量。
struct person ferry, *pferry声明过程与定义结构变量,可以组合成一个步骤。
1 | struct /*无结构标记*/ |
但如果要多次使用模板,就要加上标记。
1
2
3
4
5
6
7typedef struct BTNode
{
char data;
struct BTNode* lchild;
struct BTNode* rchild;
}BTNode;
这时编译器还没有在内存中分配空间。什么时候开始分配呢,当然是在初始化变量的时候。
初始化结构变量
struct person ferry;这样就初始化了ferry这个变量,同时为该变量分配空间。
当然,我们可以用这结构类型定义多个变量。这样就可以存储不同的信息。
初始化成员
在刚开始声明结构中就有表明了要什么样的数据类型,再到初始化变量的时候分配空间。
而,这些数据类型,就是一个个成员。
有两种方式:
- 顺序初始化
- 指定初始化
调用成员
在变量名的后面加 . 然后加上成员变量
1 |
|
1 |
|
取别名
为结构体取别名,使用typedef
1 | typedef struct complex{ |
这样就给complex这个结构取个别名COMPLEX。
例如有这样的声明和定义
1 | typedef struct { |
那么就等价于:
1 | struct |
因为r1和r2是同种类型,r2=r1是对的。没有用typedef就不可以
1 | typedef struct { |
