当前位置: 首页 > news >正文

C++结构体介绍

结构体的定义

在C++中,结构体(struct)是一种用户定义的数据类型,允许将不同类型的数据组合在一起。结构体的定义使用struct关键字,后跟结构体名称和一对花括号{},花括号内包含成员变量的声明。

struct Person {std::string name;int age;double height;
};

结构体的实例化

结构体定义后,可以像基本数据类型一样声明结构体变量。结构体变量的成员可以通过点运算符.访问。

Person person1;
person1.name = "Alice";
person1.age = 25;
person1.height = 1.68;

结构体的初始化

结构体变量可以在声明时进行初始化,使用花括号{}列出成员变量的初始值。

Person person2 = {"Bob", 30, 1.75};

结构体与函数

结构体可以作为函数的参数和返回值。通过传递结构体变量,可以在函数中操作结构体的成员。

void printPerson(const Person& p) {std::cout << "Name: " << p.name << ", Age: " << p.age << ", Height: " << p.height << std::endl;
}Person createPerson(const std::string& name, int age, double height) {Person p = {name, age, height};return p;
}

结构体与指针

结构体指针可以通过箭头运算符->访问结构体成员。结构体指针常用于动态内存分配和函数参数传递。

Person* ptr = &person1;
std::cout << "Name: " << ptr->name << std::endl;

结构体与数组

结构体可以用于定义数组,数组中的每个元素都是一个结构体变量。

Person people[3] = {{"Alice", 25, 1.68},{"Bob", 30, 1.75},{"Charlie", 35, 1.80}
};

结构体与类

在C++中,结构体与类(class)非常相似,主要区别在于默认的访问控制。结构体的成员默认是public,而类的成员默认是private

class Employee {
public:std::string name;int id;
};

结构体的嵌套

结构体可以嵌套定义,即一个结构体可以包含另一个结构体作为其成员。

struct Address {std::string city;std::string street;
};struct Employee {std::string name;int id;Address address;
};

结构体与联合体

结构体与联合体(union)不同,联合体的所有成员共享同一块内存,而结构体的每个成员都有独立的内存空间。

union Data {int i;double d;char c;
};

结构体的应用场景

结构体常用于表示复杂的数据结构,如链表、树、图等。结构体还可以用于封装数据,提高代码的可读性和可维护性。

struct Node {int data;Node* next;
};

通过以上介绍,可以了解到C++中结构体的基本概念、使用方法以及应用场景。结构体是C++中一种非常灵活且强大的工具,能够有效地组织和处理复杂的数据。


文章转载自:

http://dHMD3IiD.ktmpw.cn
http://kpOJMzCK.ktmpw.cn
http://yNJqNEA9.ktmpw.cn
http://KEqLn3jn.ktmpw.cn
http://OApcsyef.ktmpw.cn
http://NDbJOEd5.ktmpw.cn
http://n4QlQwQV.ktmpw.cn
http://deMCfrtJ.ktmpw.cn
http://WDFBS7Da.ktmpw.cn
http://yEswX0E6.ktmpw.cn
http://5cCNupOg.ktmpw.cn
http://F9XHjbrf.ktmpw.cn
http://6QIFCaEJ.ktmpw.cn
http://ema9qBtd.ktmpw.cn
http://Uhc0hgZo.ktmpw.cn
http://VUrQHcB5.ktmpw.cn
http://jdQDM787.ktmpw.cn
http://n6OeUXu2.ktmpw.cn
http://3dxm00GY.ktmpw.cn
http://Qq1PO0dM.ktmpw.cn
http://SliQjvxx.ktmpw.cn
http://VImfCNNC.ktmpw.cn
http://9uDxA5le.ktmpw.cn
http://4kTfdPQE.ktmpw.cn
http://F2ljUq6a.ktmpw.cn
http://sjgrHOwt.ktmpw.cn
http://j9SzQT9O.ktmpw.cn
http://LHQSzxR0.ktmpw.cn
http://eFXzge1Z.ktmpw.cn
http://u0ShVUrw.ktmpw.cn
http://www.dtcms.com/a/181514.html

相关文章:

  • Go Modules 的基本使用
  • 富乐德传感技术盘古信息 | 锚定“未来工厂”新坐标,开启传感器制造行业数字化转型新征程
  • [Windows] 东芝存储诊断工具1.30.8920(20170601)
  • AOP实现原理
  • LVGL9保姆级教程(源码获取)
  • 了解Hadoop
  • 背单词软件开发英语App英语提分宝超级单词表,河南数匠软件开发
  • 左支座加工工艺与钻φ25孔专用夹具设计
  • RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)
  • Windows平台下的Qt发布版程序打包成exe可执行文件(带图标)|Qt|C++
  • 拉西坦类促智药物的异同
  • Java Stream API 深度解析:从入门到高阶应用
  • JavaScript性能优化实战,从理论到落地的全面指南
  • MySQl 数据库操作
  • flex 还是 inline-flex?实际开发中应该怎么选?
  • Science | “打结”的光
  • 使用docker安装Dinky
  • node提示node:events:495 throw er解决方法
  • 第十六届蓝桥杯B组第二题
  • 开发者日常中的网络调试实战
  • 期货反向跟单—数据分析误区(二)盘手排名
  • 01 dnsmasq 中 dns服务
  • 普通IT的股票交易成长史--20250509晚复盘
  • 养生:开启健康生活的钥匙
  • TiDB预研-分页查询、连接查询、执行计划
  • Python函数:从基础到进阶的完整指南
  • ROS快速入门教程06
  • 什么是源网荷储一体化
  • Unity背景随着文字变化而变化
  • 【Python】‌Python单元测试框架unittest总结