C++ 结构体相关知识(持续更新)


结构体是组织数据结构的方式,它类似于类,但是不同于类,主要用于组织数据与数据之间的结构

与类的区别

声明结构体的方式和声明类的方式大致相同,其区别如下

  • 使用关键字 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结构体
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值