【发布时间】:2010-12-15 16:46:08
【问题描述】:
我有一个关于 C/C++ 中的数组和指针的基本问题。
说我有:
Foo* fooPtrArray[4];
如何将fooPtrArray 传递给函数?
我试过了:
int getResult(Foo** fooPtrArray){} // failed
int getResult(Foo* fooPtrArray[]){} // failed
如何处理指针数组?
编辑:我曾经认为错误消息是由于传递了错误的指针数组,但从所有的响应中,我意识到这是别的东西......(指针分配)
Error msg:
Description Resource Path Location Type incompatible types in assignment of
`Foo**' to `Foo*[4]' tryPointers.cpp tryPointers line 21 C/C++ Problem
我不太明白为什么它说:Foo* * to Foo*[4]。如果作为函数参数它们相互交换,为什么在赋值过程中会出现编译错误?
我尝试用最少的代码复制错误消息,如下所示:
#include <iostream>
using namespace std;
struct Foo
{
int id;
};
void getResult(Foo** fooPtrArray)
{
cout << "I am in getResult" << endl;
Foo* fooPtrArray1[4];
fooPtrArray1 = fooPtrArray;
}
int main()
{
Foo* fooPtrArray[4];
getResult(fooPtrArray);
}
【问题讨论】:
-
定义“失败”。编译时失败?在运行时?如何,确切地(或模糊地,我不介意)?
-
我附上了我的修剪代码,这是编译时错误。错误来自函数内部 void getResult(Foo* * fooPtrArray)
标签: c++ arrays function pointers