22结构体类型

简介: 22结构体类型

C++入门——60s从0到1

结构体类型

 

当我们需要描述一个实体的多个属性时,结构体是一种非常有用的数据类型。在C++中,我们可以使用结构体来定义自己的数据类型,从而更好地组织和管理数据。

 

本篇文章将详细介绍C++中的结构体类型,包括结构体的定义、成员变量的访问、结构体对象的创建和初始化、结构体指针的使用、结构体嵌套和结构体继承等内容。

 

结构体的定义

 

结构体是一种用户自定义的数据类型,可以包含多个不同类型的成员变量。在C++中,结构体的定义通常包含关键字struct,后跟结构体名和成员列表。下面是一个简单的示例:

 

struct Person {

   string name;

   int age;

   float height;

};

 

在上面的示例中,我们定义了一个名为Person的结构体类型,它包含三个成员变量:name、age和height。这些成员变量的数据类型分别为string、int和float。

 

成员变量的访问

 

我们可以通过点号运算符来访问结构体的成员变量。下面是一个示例:

 

Person p1 = {"Tom", 20, 1.75};

cout << "Name: " << p1.name << endl;

cout << "Age: " << p1.age << endl;

cout << "Height: " << p1.height << endl;

 

在上面的示例中,我们创建了一个名为p1的结构体对象,并初始化了它的成员变量。然后我们通过点号运算符访问了结构体的成员变量,并输出了它们的值。

 

结构体对象的创建和初始化

 

我们可以使用以下语法来创建一个结构体对象:

 

struct Person p1 = {"Tom", 20, 1.75};

 

在上面的示例中,我们使用关键字struct来声明一个名为p1的结构体对象,并使用花括号{}初始化了它的成员变量。注意,花括号{}中的值必须与结构体的成员变量的顺序相对应。

 

除了使用花括号{}进行初始化外,我们还可以单独对每个成员变量进行初始化。下面是一个示例:

 

struct Person {
    string name;
    int age;
    float height;
};
 
int main() {
    Person p1 = {"Tom", 20}; // 对name和age进行初始化,height的值为默认值0.0f
    p1.height = 1.75f; // 对height进行单独初始化
    cout << "Name: " << p1.name << endl;
    cout << "Age: " << p1.age << endl;
    cout << "Height: " << p1.height << endl;
    return 0;
}

 

在上面的示例中,我们对结构体进行了单独的初始化。首先我们创建了一个名为p1的结构体对象,并对name和age进行了初始化。由于height没有显式地进行初始化,因此它的值为默认值0.0f。然后我们又对height进行了单独的初始化。最后我们输出了结构体的成员变量的值。

 

结构体指针的使用

 

我们可以使用指针来访问结构体的成员变量和成员函数。下面是一个示例:

struct Person {
    string name;
    int age;
    float height;
};
 
int main() {
    // 通过指针访问结构体的成员变量和成员函数
    Person *ptr = &p1; // 将指针指向结构体对象p1
    ptr->display(); // 通过指针调用display()函数
    cout << "Age: " << ptr->age << endl; // 通过指针访问age成员变量
    return 0;
}

 

在上面的示例中,我们首先定义了一个名为Person的结构体类型,并在其中添加了一个名为display的成员函数。然后我们创建了一个名为p1的结构体对象,并通过指针ptr指向它。最后我们通过指针调用了结构体的成员函数和访问了成员变量的值。需要注意的是,在使用指针访问结构体的成员时需要使用箭头运算符->。

目录
相关文章
|
存储 自然语言处理 关系型数据库
数据集成中的5个现代挑战以及CIO如何克服这些挑战
数据集成中的5个现代挑战以及CIO如何克服这些挑战
|
存储 Java 编译器
Java-关于main函数的修饰符(为什么要带public和static)
关于Java主函数的修饰符(为什么要带public和static) public修饰符 public是函数的权限,决定了该函数是否可以被外部的函数调用
|
开发者
学习笔记 | 开发者社区运营: 工程师修炼的另一条路径
学习笔记 | 开发者社区运营: 工程师修炼的另一条路径
184 0
|
机器学习/深度学习 存储 分布式计算
|
Arthas Java 测试技术
Arthas ByteKit 深度解读(2):本地变量及参数绑定
### 前言 本文通过分析ByteKit的本地变量绑定(LocalVarsBinding)处理代码,结合Java Opcode手册、asm代码、javap反汇编字节码等工具,深入讲解每个指令的用法及在本场景的实际作用。结合上下文线索,从字节码的角度去理解ByteKit 本地变量绑定的实现过程。 相关文章: [Arthas ByteKit 深度解读(1):基本原理介绍](https:/
688 0
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
983 151
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话