请指导我这段代码,我想用数组和函数存储5个数据的列表,这是我的一段代码,但是这给了我一个错误(“33”):
Cannot convert `ABC (*)[5]' to `ABC*' for argument `1' to `void pass(ABC*)'
代码:
#include <iostream>
using namespace std;
struct ABC{
char name[20];
int phone;
char address[20];
};
void pass(ABC *abc){
for(int i=0; i<5;i++){
cout<<"Enter name"<<endl;
cin>>abc[i].name;
cout<<"Enter phone"<<endl;
cin>>abc[i].phone;
cout<<"Enter address"<<endl;
cin>>abc[i].address;
}
}
int main()
{
ABC abc[5];
pass(&abc);
system("PAUSE");
return EXIT_SUCCESS;
}
答案 0 :(得分:5)
您可以使用pass(&abc[0]);
或pass(abc);
来获取指向数组中第一个元素的指针。否则,如果单独使用&abc
,则会获得指向整个数组[5]的指针,而不是数组中的元素。
答案 1 :(得分:3)
数组不是指针。但是当你进行函数调用时,它们会衰减到指针。 所以你可以像这样传递你的数组:
pass(abc);