这段代码哪里错了呢?

问题描述:

这段代码哪里错了呢?

// Created by 黑马程序员.
#include "iostream"
using namespace std;
//结构体定义
struct student
{
	//成员列表
	string name;  //姓名
	int age;      //年龄
	int score;    //分数
};


int main() {
    system("chcp 65001");

	struct student stu = { "张三",18,100, };

	struct student * p = &stu;

	p->score = 80; //指针通过 -> 操作符可以访问成员

	cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;

	system("pause");

	return 0;
}

问题解答:

 

在你的代码中,主要问题是指针类型的定义错误。你定义了一个指向 student 结构体的指针 p,但将其定义为 int* 类型,这是不正确的。

正确的指针定义

你应该将指针的类型定义为 student*,以指向 student 结构体。修改后的代码如下:

#include "iostream"
using namespace std;

// 结构体定义
struct student {
    // 成员列表
    string name;  // 姓名
    int age;      // 年龄
    int score;    // 分数
};

int main() {
    system("chcp 65001");

    struct student stu = { "张三", 18, 100 };

    // 将指针类型更改为 student*
    struct student* p = &stu;

    p->score = 80; // 指针通过 -> 操作符可以访问成员

    cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;

    system("pause");

    return 0;
}

主要修改点

  1. 指针类型修改
     
    struct student* p = &stu; // 正确的定义
    

输出结果

运行修改后的代码,你将得到如下输出:

姓名:张三 年龄:18 分数:80

这样就解决了错误。如果你有其他问题,欢迎继续提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神笔馬良

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

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

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

打赏作者

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

抵扣说明:

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

余额充值