结构体是组织数据结构的方式,它类似于类,但是不同于类,主要用于组织数据与数据之间的结构
与类的区别
声明结构体的方式和声明类的方式大致相同,其区别如下
- 使用关键字 struct 而不是关键字 class。
- 尽管结构体可以包含成员函数,但它们很少这样做。所以,通常情况下结构体声明只会声明成员变量。
- 结构体声明通常不包括 public 或 private 的访问修饰符。
- 类成员默认情况是私有的,而结构体的成员则默认为 public。程序员通常希望它们保持公开,只需使用默认值即可。
struct Package {
int ctLength=0; // 内容长度
char* token=""; // token值
Package(){
// 这里我们可以通过构造函数的方式初始化 这个结构体,但是也不提倡这样做,因为结构体尽量不要有除变量成员以外的东西
}
// private int demo1; 甚至可以有私有成员,但通常不这样做
// void convert(){} 也可以有函数作为成员,但通常也不这样做
// ..... 还可以有很多
}; // 最后这个分号一定要有
内存分布图
创建结构体实例
Package p1,p2,p3; // 这里创建了数据类型为Package的实例p1,p2,p3
访问成员
p1.ctLength; // 访问ctLength成员变量
p1.token; // 访问token成员变量
嵌套结构体
在一个结构体中某个成员的数据类型可以是另一个结构体,其内存模型是所有结构体的成员之和
struct S1{
char *name;
int age;
}; // 这里声明了S1结构体
struct S2{
int id;
S1 *s1; // 这里我们声明了S2结构体中包含有指向S1变量的成员指针
}; // 这里声明了S2结构体