#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;
}
}
哪位高手能帮忙告诉我怎么使用“引用”解决这个问题吗?当然用指针也可以解决这个问题,但我想知道“引用”怎么解决这个问题
我的环境是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;
}
}
使用结构体名作为函数形参时,不需要限定数组大小呀,即void print(student pstud)[])这样就可以,为什么“引用”时需要限定数组大小呢?即void print(student (&pstud)[5])
很是不解!请指点!
如果参数是数组的引用,那么编译器不会将它转换为指针,而是直接传递数组本身,也就是说,数组的长度不可省略,编译器将检查传入函数的实际数组参数的长度和函数的形式参数的长度是否匹配。
参考资料:<C++ Primer 4th Edition >, page 239
本回答被提问者采纳