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

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://www.xdnf.cn/news/5111.html

相关文章:

  • C# NX二次开发:宏录制实战讲解(第一讲)
  • Jetpack Compose 状态管理:为什么 `by viewModel.state` 能自动刷新界面?
  • C语言实现三子棋
  • java volatile关键字
  • LINUX CFS算法解析
  • YOLO目标检测算法
  • 麦角硫因:全能型护肤成分的技术突破与应用前景
  • 数据链路层服务
  • 基础RNN网络详解
  • 餐饮行业新风口:上门厨师服务系统的技术实现路径
  • 机器视觉的平板电脑屏幕组件覆膜应用
  • canoe的安装总结
  • requests库
  • 【笔记】BCEWithLogitsLoss
  • [Windows] 摄像头分身工具【CamSplitter】
  • upload文件上传
  • ES6新增Set、Map两种数据结构、WeakMap、WeakSet举例说明详细。(含DeepSeek讲解)
  • 【PINN】DeepXDE学习训练营(18)——operator-diff_rec_unaligned_pideeponet.py
  • 安全核查基线-1.LPD服务
  • 【软件设计师:体系结构】15.计算机体系结构概论
  • 将/root下的employee.json挪到/home/Downloads/
  • 让模型具备“道生一,一生二,二生三,三生万物”的现实实用主义能力
  • Stagehand:AI驱动的下一代浏览器自动化框架
  • 历史温度曲线能优化样本存储的条件还是确保样本处于稳定状态呢?
  • Linux系统入门第十一章 --Shell编程之函数与数组
  • CreArt 2.5.6 |无限AI图片生成工具,将文字描述转化为独特艺术作品,解锁高级版
  • FastChat部署大模型
  • 从量子计算到人工智能代理
  • PPT插入图像自带透明
  • 分布式处理架构