【发布时间】:2013-05-23 20:17:56
【问题描述】:
请原谅这个非常基本的问题,但作为一名 Java 程序员,这个 C++ 错误并不完全是“点击”,可以这么说。
我想在一个函数中创建和初始化一个数组,然后将该数组传递给另一个函数。在接收函数中,我想访问传入数组的元素。
作为一个(缩写)示例:
class demo{
main() {
int members[] = { 1, 2, 3, 4, 5 };
example.function(members);
}
}
这会将数组members 传递给以下函数:
class example {
int members[];
void function(int mem[]) {
members = mem;
}
}
这给了我错误:
error: incompatible types in assignment of ‘int*’ to ‘int [0]’
我希望 example.members[] 等于 demo.members[]。我明白为什么我在example.function 中得到一个int*,但不知道如何在class example 中设置数组。
【问题讨论】:
-
你不能在 C 或 C++ 中传递数组,你传递的是一个指向初始元素的指针。
void function(int mem[])真正的意思是void function(int *mem)[但请注意,这仅适用于函数参数] 另外,数组不可赋值。 -
我只想要一个指针,这样我就可以访问数组的内容。我不知道如何在课堂示例中存储它。
标签: c++ arrays pointers pass-by-reference