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

C++ 结构体、结构体指针与结构体指针数组详解

C++ 结构体、结构体指针与结构体指针数组详解

1. 结构体 (Struct)

结构体是C++中一种用户自定义的数据类型,它允许你将不同类型的数据组合在一起。

基本用法

// 定义一个结构体
struct Student {
    int id;         // 学号
    string name;    // 姓名
    float score;    // 成绩
};

// 使用结构体
int main() {
    // 创建结构体变量
    Student stu1;
    
    // 访问结构体成员
    stu1.id = 101;
    stu1.name = "张三";
    stu1.score = 89.5;
    
    // 初始化结构体
    Student stu2 = {102, "李四", 92.0};
    
    return 0;
}

2. 结构体指针

结构体指针是指向结构体变量的指针,通过指针可以访问和操作结构体成员。

基本用法

int main() {
    Student stu = {103, "王五", 85.5};
    
    // 创建结构体指针
    Student* pStu = &stu;
    
    // 通过指针访问成员
    // 方法1:使用 -> 操作符
    cout << "ID: " << pStu->id << endl;
    cout << "Name: " << pStu->name << endl;
    
    // 方法2:先解引用再使用 . 操作符
    cout << "Score: " << (*pStu).score << endl;
    
    return 0;
}

3. 结构体指针数组

结构体指针数组是存放多个结构体指针的数组,常用于管理多个结构体对象。

基本用法

int main() {
    // 创建几个学生结构体
    Student stu1 = {101, "张三", 89.5};
    Student stu2 = {102, "李四", 92.0};
    Student stu3 = {103, "王五", 85.5};
    
    // 创建结构体指针数组
    Student* stuArray[3] = {&stu1, &stu2, &stu3};
    
    // 访问结构体指针数组元素
    for(int i = 0; i < 3; i++) {
        cout << "学生" << i+1 << ": " 
             << stuArray[i]->name 
             << ", 成绩: " << stuArray[i]->score << endl;
    }
    
    // 动态分配的结构体指针数组
    Student** dynamicArray = new Student*[3];
    dynamicArray[0] = new Student{104, "赵六", 78.0};
    dynamicArray[1] = new Student{105, "钱七", 95.0};
    dynamicArray[2] = new Student{106, "孙八", 88.5};
    
    // 使用后记得释放内存
    for(int i = 0; i < 3; i++) {
        delete dynamicArray[i];
    }
    delete[] dynamicArray;
    
    return 0;
}

实际应用示例

#include <iostream>
#include <string>
using namespace std;

struct Book {
    string title;
    string author;
    float price;
};

void printBookInfo(const Book* book) {
    cout << "《" << book->title << "》" 
         << " 作者: " << book->author 
         << " 价格: " << book->price << "元" << endl;
}

int main() {
    // 创建几个图书结构体
    Book book1 = {"C++ Primer", "Stanley Lippman", 128.0};
    Book book2 = {"Effective C++", "Scott Meyers", 99.0};
    Book book3 = {"Design Patterns", "Erich Gamma", 89.5};
    
    // 创建图书指针数组
    Book* library[3] = {&book1, &book2, &book3};
    
    // 打印所有图书信息
    cout << "图书馆藏书列表:" << endl;
    for(int i = 0; i < 3; i++) {
        printBookInfo(library[i]);
    }
    
    return 0;
}

总结

  1. 结构体:将不同类型的数据组合成一个新的数据类型
  2. 结构体指针:指向结构体的指针,使用->操作符访问成员
  3. 结构体指针数组:存储多个结构体指针的数组,适合管理大量结构体对象

结构体指针和指针数组在管理大量数据时非常有用,可以减少数据复制的开销,提高程序效率。

相关文章:

  • RabbitMQ 的三种集群模式
  • ETL数据集成:企业数字化转型的核心驱动力与实施策略
  • C++ Primer Plus 编程练习题 第五章 循环和关系表达式
  • 22-ArkTs 常见错误
  • DataPlatter:利用最少成本数据提升机器人操控的泛化能力
  • K8S学习之基础六十四:helm常用命令
  • 戴尔电脑安装Ubuntu双系统
  • 设计模式中的“万能转换器”——适配器模式
  • 【AI News | 20250331】每日AI进展
  • 鸿蒙编译构建-多目标产物
  • Scala循环守卫
  • vi编辑器常见命令
  • stm32第十一天外部中断按键控制灯
  • 自定义类型:结构体
  • 【Java】——数组深度解析(从内存原理到高效应用实践)
  • CentOS 7上手动强制升级docker-compose(不使用yum)
  • 苍穹外卖项目结构
  • Loadrunner报错Virtual User Generator 初始化用户生成器失败 初始化失败
  • AI产品的架构(分四层)
  • ArkUI —— 组件导航
  • 微信公众号网站导航怎么做/域名解析ip地址
  • 收费网站怎么做/b2b网站大全
  • 新闻静态网站咋做/怎么自己做网站推广
  • 建设一个导航网站/全网推广软件
  • 一个几个人做网站的几个故事电影/chatgpt 网址
  • 怎样注册网站账号申请/公司官网模板