我是C ++的初学者,只是用PHP和JAVA编程,我有一个指向2d数组的问题,然后在[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],我该如何解决呢?
答案 0 :(得分:1)
您的功能应具有以下签名:
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]
,如上例所示。