问题描述:
根据下列代码和结果回答下列问题。
代码:
// Created by 黑马程序员.
#include "iostream"
using namespace std;
int main()
{
struct Student
{
string name;
int age;
string gender;
};
// 先创建一个标准的结构体对象(静态内存管理)
struct Student stu = {"周杰轮", 11, "男"};
// 创建结构体的指针,指向结构体对象的地址
struct Student * p = &stu;
// 通过结构体指针,访问结构体的成员,要使用的符号是:->
cout << "结构体中成员的name:" << p->name << endl;
cout << "结构体中成员的age:" << p->age << endl;
cout << "结构体中成员的gender:" << p->gender << endl;
// 通过new操作符,申请结构体的空间
struct Student * p2 = new Student {"林军杰", 21, "男"};
cout << "结构体2中成员的name:" << p2->name << endl;
cout << "结构体2中成员的age:" << p2->age << endl;
cout << "结构体2中成员的gender:" << p2->gender << endl;
delete p2;
return 0;
}
D:\CLion_code\cmake-build-debug\CLion_code.exe
结构体中成员的name:周杰轮
结构体中成员的age:11
结构体中成员的gender:男
结构体2中成员的name:林军杰
结构体2中成员的age:21
结构体2中成员的gender:男
Process finished with exit code 0
结构体如何使用指针呢?两种方法,第一种是静态内存管理,不能用delete回收内存。第二种,使用new申请结构体的内存空间。通过结构体指针,访问结构体的成员,要使用的符号是什么呢?->
问题解答:
在C++中,通过指针访问结构体成员时,使用的符号是 ->
。这个符号是成员访问操作符,用于指针指向的结构体或类的成员访问。
根据代码的内容和结果:
-
静态内存管理的结构体指针:
struct Student stu = {"周杰轮", 11, "男"}; struct Student * p = &stu;
在这段代码中,结构体
stu
是通过静态内存管理创建的,指针p
指向这个结构体。通过指针p
访问结构体的成员时,使用->
操作符:p->name, p->age, p->gender
-
动态内存管理的结构体指针:
struct Student * p2 = new Student {"林军杰", 21, "男"};
在这段代码中,使用
new
操作符动态分配了一个结构体Student
的内存,并将其地址赋给指针p2
。通过指针p2
访问结构体的成员时,同样使用->
操作符:p2->name, p2->age, p2->gender
总结:
- 静态内存管理 中,不能使用
delete
来回收内存,因为对象是在栈上分配的,系统会自动管理其生命周期。 - 动态内存管理 中,需要使用
delete
来释放内存,否则会导致内存泄漏。
通过指针访问结构体成员时,正确的操作符是 ->
。
标签:name,成员,内存,Student,结构,指针 From: https://blog.csdn.net/weixin_43501408/article/details/141868615