C++ 结构和功能(通过引用传递)
请指导我这段代码,我想使用数组和函数存储5个数据的列表,这是我的一段代码,但这给了我一个错误(“33”): 代码: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]不是数组中的元素。数组不是指针。但在执行函数调用时,它们可能会衰减为指针。
#包括
使用名称空间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;
}