用于函数c ++的二维数组的指针

时间:2015-12-12 23:07:01

标签: c++ arrays pointers

我是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],我该如何解决呢?

1 个答案:

答案 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],如上例所示。