【入门级-C++程序设计:11、指针与引用-指向结构体的指针】

在C++中,指向结构体的指针是一种常用的数据操作方式,指针和结构体建立联系后,就可以通过指针间接访问和修改结构体的成员。

1、定义指向结构体的指针
(1) 首先定义结构体
struct Student {
int id;
string name;
float score;
};

(2) 定义指向结构体的指针
Student s1 = {101, “Alice”, 95.5};
Student* ptr = &s1; // 定义结构体指针ptr,结构体指针ptr 指向 s1 的地址(可理解为将变量s1的地址赋值给指针ptr)

在C/C++中的任何“东四”(变量、函数名、数组名等等)都有地址,定义一个指针,将指针指向这些地址,就可以对指向的地址中的内容进行操作。因此,当定义完结构体指针之后,通过结构体指针就可以对结构体中的数据进行读写操作。

2、通过指针访问成员
(1) 使用“ ->”运算符
cout << ptr->id << endl; // 输出 101
cout << ptr->name << endl; // 输出 “Alice”
ptr->score = 99.0; // 修改成员值
(2) 使用 (*ptr). 运算符
cout << (*ptr).id << endl; // 输出 101(等价于 ptr->id)
(*ptr).name = “Bob”; // 修改成员
注意:-> 是更简洁的写法,优先使用。

3、动态分配结构体指针
(1) 使用 new 动态分配
Student* ptr = new Student{102, “Charlie”, 88.5};
cout << ptr->name << endl; // 输出 “Charlie”
delete ptr; // 必须手动释放内存!
(2) 使用 new 动态分配结构体数组
Student* arr = new Student[3]{
{103, “Dave”, 70.0},
{104, “Eve”, 85.5},
{105, “Frank”, 92.0}
};
cout << arr[1].name << endl; // 输出 “Eve”
delete[] arr; // 释放数组

4、结构体指针与 const
指向常量的指针:不能通过指针修改结构体成员。
const Student* ptr = &s1;
//ptr->id = 200; // 错误!不可修改。在ptr有const修饰,因此ptr是指向常量的指针
cout << ptr->name << endl; // 允许读取

常量指针:指针本身不可修改指向。
Student* const ptr = &s1;
ptr->id = 200; // 允许修改成员
// ptr = &s2; // 错误!指针不可修改

指向结构体的指针总结
用途:动态管理结构体、函数间高效传递结构体、构建复杂数据结构(如链表、树)。
操作:用 -> 访问成员,动态分配需 new/delete,动态分配的内存必须手动释放,使用 const 增强安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papership

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值