问题描述:
这段代码哪里错了呢?
// 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;
}
主要修改点
- 指针类型修改:
struct student* p = &stu; // 正确的定义
输出结果
运行修改后的代码,你将得到如下输出:
姓名:张三 年龄:18 分数:80
这样就解决了错误。如果你有其他问题,欢迎继续提问!