c++结构体运行出错了,问题出在哪里呢?

#include<iostream>
using namespace std;
struct student
{
    int num;
    char name[20];
    float score[3];
    student* next;
}stu={10001,"Bob",89,90,91},stu2={10002,"Alice",88,89,90};
void print(student* p)
{
    cout<<p->num<<p->name<<p->score[0]<<p->score[1]<<p->score[2];
    p=p->next;
}
int main()
{
        
        student* head=&stu;
        stu.next=&stu2;
        stu2.next=NULL;
        student* p=head;
        do{
            print(&stu);}
        while(p!=NULL);
    return 0;
}

题目描述

题目来源及自己的思路

相关代码

粘贴代码文本(请勿用截图)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1k
1 个回答

print(&stu); 改爲 print(p);
&stu 是取地址,而非指針變量。即使傳入函數,其地址也不可修改。故傳入指針變量 p

void print(student* p) 改爲 void print(student* &p)
在函數内對變量值做修改不會實際影響調用函數的實參,故使用引用傳遞,這樣在函數内的修改才會實際作用于調用函數的實參。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏