c++ - 二维数组指向函数c++的指针

标签 c++ arrays pointers

我是 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/

相关文章:

c++ - 如何判断 stderr 是否将输出定向到文件?

php切割多维数组

php - 如何在 MySQL 中获取印地语和古吉拉特语的数据?

arrays - 为了在 PL/SQL 中对这些数据进行排序,使用什么数据结构?

C, 数组中的随机元素打印到终端时变成 '?' 字符

c++ - 将按引用传递的变量分配给结构成员时会发生什么

c - 为什么对象句柄经常显示为指向指针的指针

c++ - C++ 上 char 数组输出中不同颜色的字符

c++函数使文件通过定界符读取但样式不同

c++ - 由于查找 Windows.h 时出现问题,无法设置 openGL superBible 示例