2024-06-22 01:36:41
2024-06-22 04:10:45
我的环境是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