c++ struct结构体的用法

2024-09-03 08:04
文章标签 c++ 用法 结构 struct

本文主要是介绍c++ struct结构体的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 C++ 中,struct(结构体)是一种用户自定义的数据类型,可以用来组合不同类型的数据。结构体的使用非常广泛,尤其在需要将多个相关的数据组合在一起时。

定义结构体

使用 struct 关键字定义一个结构体的基本语法如下:

struct StructName {// 数据成员DataType member1;DataType member2;// ...
};

示例

下面是一个简单的示例,展示了如何定义和使用结构体:

#include <iostream>
#include <string>struct Person {std::string name;int age;float height;
};int main() {// 创建结构体变量Person person1;// 给结构体成员赋值person1.name = "Alice";person1.age = 30;person1.height = 5.5;// 输出结构体成员std::cout << "Name: " << person1.name << std::endl;std::cout << "Age: " << person1.age << std::endl;std::cout << "Height: " << person1.height << " feet" << std::endl;return 0;
}

结构体的初始化

可以在定义结构体变量时直接进行初始化:

Person person2 = {"Bob", 25, 6.0};

结构体数组

可以创建结构体的数组来存储多个相同类型的结构体:

Person people[3] = {{"Alice", 30, 5.5},{"Bob", 25, 6.0},{"Charlie", 28, 5.8}
};

结构体作为函数参数

结构体可以作为函数参数传递:

void printPerson(const Person& p) {std::cout << "Name: " << p.name << ", Age: " << p.age << ", Height: " << p.height << " feet" << std::endl;
}int main() {Person person = {"Alice", 30, 5.5};printPerson(person);return 0;
}

结构体与类的区别

  • 默认访问权限:在 struct 中,成员的默认访问权限是 public,而在 class 中,默认访问权限是 private
  • 用途struct 通常用于简单的数据结构,而 class 用于封装更复杂的对象及其行为。

示例:包含函数的结构体

C++ 的结构体不仅仅可以包含数据成员,也可以包含成员函数:

struct Rectangle {float width;float height;float area() {return width * height;}
};int main() {Rectangle rect = {10.0, 5.0};std::cout << "Area: " << rect.area() << std::endl;return 0;
}

总结

struct 是 C++ 中一个非常有用的特性,适用于组织和管理相关数据。它可以与类同样使用,并且可以包含数据和函数。通过使用结构体,可以有效地解决和管理复杂的数据结构。

这篇关于c++ struct结构体的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132471

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Java中的@SneakyThrows注解用法详解

《Java中的@SneakyThrows注解用法详解》:本文主要介绍Java中的@SneakyThrows注解用法的相关资料,Lombok的@SneakyThrows注解简化了Java方法中的异常... 目录前言一、@SneakyThrows 简介1.1 什么是 Lombok?二、@SneakyThrows

Python中的getopt模块用法小结

《Python中的getopt模块用法小结》getopt.getopt()函数是Python中用于解析命令行参数的标准库函数,该函数可以从命令行中提取选项和参数,并对它们进行处理,本文详细介绍了Pyt... 目录getopt模块介绍getopt.getopt函数的介绍getopt模块的常用用法getopt模

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Java中Scanner的用法示例小结

《Java中Scanner的用法示例小结》有时候我们在编写代码的时候可能会使用输入和输出,那Java也有自己的输入和输出,今天我们来探究一下,对JavaScanner用法相关知识感兴趣的朋友一起看看吧... 目录前言一 输出二 输入Scanner的使用多组输入三 综合练习:猜数字游戏猜数字前言有时候我们在

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大