结构体如何使用指针呢?两种方法,第一种是静态内存管理,不能用delete回收内存。第二种,使用new申请结构体的内存空间。通过结构体指针,访问结构体的成员,要使用的符号是什么呢?->

问题描述:

根据下列代码和结果回答下列问题。

代码:

// 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++中,通过指针访问结构体成员时,使用的符号是 ->。这个符号是成员访问操作符,用于指针指向的结构体或类的成员访问。

根据代码的内容和结果:

  1. 静态内存管理的结构体指针

    struct Student stu = {"周杰轮", 11, "男"};
    struct Student * p = &stu;
    

    在这段代码中,结构体 stu 是通过静态内存管理创建的,指针 p 指向这个结构体。通过指针 p 访问结构体的成员时,使用 -> 操作符:

    p->name, p->age, p->gender
    

  2. 动态内存管理的结构体指针

    struct Student * p2 = new Student {"林军杰", 21, "男"};
    

    在这段代码中,使用 new 操作符动态分配了一个结构体 Student 的内存,并将其地址赋给指针 p2。通过指针 p2 访问结构体的成员时,同样使用 -> 操作符:

    p2->name, p2->age, p2->gender
    

总结:

  • 静态内存管理 中,不能使用 delete 来回收内存,因为对象是在栈上分配的,系统会自动管理其生命周期。
  • 动态内存管理 中,需要使用 delete 来释放内存,否则会导致内存泄漏。

通过指针访问结构体成员时,正确的操作符是 ->

 

  • 22
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神笔馬良

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

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

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

打赏作者

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

抵扣说明:

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

余额充值