Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构和功能(通过引用传递)_C++_Arrays_Function_Pointers_Structure - Fatal编程技术网

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

C++ 结构和功能(通过引用传递),c++,arrays,function,pointers,structure,C++,Arrays,Function,Pointers,Structure,请指导我这段代码,我想使用数组和函数存储5个数据的列表,这是我的一段代码,但这给了我一个错误(“33”): 代码: #包括 使用名称空间std; 结构ABC{ 字符名[20]; 国际电话; 字符地址[20]; }; 无效通行证(ABC*ABC){ 对于(int i=0;i您可以使用pass(&abc[0]);或pass(abc);来获取指向数组中第一个元素的指针。否则,如果单独使用&abc可以获取指向整个数组的指针[5]不是数组中的元素。数组不是指针。但在执行函数调用时,它们可能会衰减为指针。

请指导我这段代码,我想使用数组和函数存储5个数据的列表,这是我的一段代码,但这给了我一个错误(“33”):

代码:

#包括
使用名称空间std;
结构ABC{
字符名[20];
国际电话;
字符地址[20];
};
无效通行证(ABC*ABC){

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

数组不是指针。但在执行函数调用时,它们可能会衰减为指针。 因此,可以按如下方式传递数组:


pass(abc);

我看不出您通过引用传递的位置(除了
endl
abc[I]。电话
)。您所做的被正确地称为“指针传递”.+1,因为它没有使数组是指针的说法变得虚假和不可辩护,但这是一个非常常见的说法!这不是很正确的解释。
&abc
获取指向数组的指针,而传递
&abc[0]
或仅
abc
将获得指向数组第一个元素的指针。由于参数的类型为
abc*
,因此它需要指向元素的指针。@sftrabbit:对,我没有想到用这种方式来解释它,我将进行编辑。
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;
}