我是 C++ 的初学者,只是想用 PHP 和 JAVA 编程,我在制作一个指向二维数组的指针,然后在 [0] 和 [1] 的不同函数和 cout 值中使用这个指针时遇到了问题。
这是我的脚本的一部分。
int size_dd = 5;
int dd[size_dd][2];
for (int i = 0; i < size_dd; i ++)
{
dd[i][0] = 2 * i + 10;
dd[i][1] = 4 * i + 20;
}
我可以在 main 函数中读取 dd[i][0] 但我不能在函数 read(int* twodarray) 中调用它们,因为它返回 int[int] 并且数组中的第二个参数丢失了。
问题是我需要指向这个数组并在其他函数中调用它。
但问题是当我在函数中处理 *dd 时,它返回 dd 是 int[int] 值而不是 int[int][int],我该如何解决它?
最佳答案
您的函数应具有以下签名:
void fooByPtr(int(*arr)[5][6]) {
(*arr)[4][4] = 156;
}
// Call ex:
int dd[5][6];
fooByPtr(&dd);
您也可以使用引用和模板来完成:
void fooByRef(int (&arr)[5][6]) {
arr[4][4] = 156;
}
template<int N, int M>
void fooByRefTempl(int(&arr)[N][M]) {
arr[4][4] = 156;
}
对您的代码的一些其他评论(也是评论中的评论):
您可以使用常量值作为大小来创建数组,所以这是错误的:
int size_dd = 5;
应该是:
const int size_dd = 5;
在你的 fun_call 中,你应该取消引用你的数组:(*dwu_wymiar)
在索引它之前。
最后,将 funCall(int(*dwu_wymiar)[][2],
更改为 int(*dwu_wymiar)[5][2]
,如我的示例所示以上。
关于c++ - 二维数组指向函数c++的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34246057/