结构和功能(通过引用传递)

时间:2013-12-20 15:59:27

标签: c++ arrays function pointers structure

请指导我这段代码,我想用数组和函数存储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;
}

2 个答案:

答案 0 :(得分:5)

您可以使用pass(&abc[0]);pass(abc);来获取指向数组中第一个元素的指针。否则,如果单独使用&abc,则会获得指向整个数组[5]的指针,而不是数组中的元素。

答案 1 :(得分:3)

数组不是指针。但是当你进行函数调用时,它们会衰减到指针。 所以你可以像这样传递你的数组:

pass(abc);