C++ 结构体数组 引用类型作为函数形参时,编译错误,提示“引用”使用的不对

#include<iostream>usingnamespacestd;structstudent{charname[10];intnum;intscore[3];};i... #include<iostream>
using namespace std;
struct student
{
char name[10];
int num;
int score[3];
};

int main()
{
void print(student &pstud[]);
student stu[5];
int i,j;
cout<<"input the students' information :\n";
cout<<"name num score"<<endl;
for(i=0;i<5;i++)
{
cin>>stu[i].name>>stu[i].num;
for(j=0;j<3;j++)
cin>>stu[i].score[j];
}

print(stu);
return 0;
}

void print(student &pstud[])///////////////结构体"引用"作为函数形参
{
int i,j;
for(i=0;i<5;i++)
{
cout<<"name :"<<(*(pstud+i)).name<<endl<<"NO."<<(pstud[i]).num<<endl;
for(j=0;j<3;j++)
cout<<"score "<<j+1<<':'<<(pstud[i]).score[j]<<endl;

cout<<endl<<endl;

}
}

哪位高手能帮忙告诉我怎么使用“引用”解决这个问题吗?当然用指针也可以解决这个问题,但我想知道“引用”怎么解决这个问题
展开
 我来答
百度网友b1de0ea
2012-05-08 · TA获得超过239个赞
知道小有建树答主
回答量:464
采纳率:0%
帮助的人:350万
展开全部
只要把print函数定义和声明处的参数中 & 符号去掉就行了,你加上这个符号愿意可能是想按引用使用参数,但是pstud[]是数组,直接使用它就是使用他的地址,也即按引用使用,所以不必加它。
而你非要用&,则相当于传递了一个指针,但是这个类型的指针并不是指向pstud结构体的指针,而是指向pstud[]类型的指针,这么说如果不理解,建议你去研究一下二维数组和指向指针的指针
匿名用户
2012-05-08
展开全部
把程序中的所有的:
void print(student &pstud[])

都改为:
void print(student (&pstud)[])

即可。

(共修改两处, 一处main()函数中的声明,另一处就是后面的定义)
更多追问追答
追问
我的环境是VC6.0,按照你说的这种方式还是编译不能通过!
追答
程序修改如下 :

#include
using namespace std;
struct student
{
char name[10];
int num;
int score[3];
};

int main()
{
void print(student (&pstud)[5]); ///////注意这里
student stu[5];
int i,j;
cout>stu[i].name>>stu[i].num;
for(j=0;j>stu[i].score[j];
}

print(stu);
return 0;
}

void print(student (&pstud)[5])//////注意这里
{
int i,j;
for(i=0;i<5;i++)
{
cout<<"name :"<<(*(pstud+i)).name<<endl<<"NO."<<(pstud[i]).num<<endl;
for(j=0;j<3;j++)
cout<<"score "<<j+1<<':'<<(pstud[i]).score[j]<<endl;

cout<<endl<<endl;

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式