c++ - 如何通过c中的指针传递二维数组

标签 c++ c pointers

<分区>

Possible Duplicate:
Passing a pointer representing a 2D array to a function in C++

我试图通过指针将我的二维数组传递给一个函数,并想修改值。

#include <stdio.h>

void func(int **ptr);

int main() {
    int array[2][2] = {
        {2, 5}, {3, 6}
    };

    func(array);

    printf("%d", array[0][0]);
    getch();
}

void func(int **ptr) {
    int i, j;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            ptr[i][j] = 8;
        }
    }
}

但是程序因此崩溃了。我做错了什么?

最佳答案

您的数组的类型为 int[2][2](“2 个 int 数组的数组”),它的名称将衰减为指向其第一个元素的指针,该元素的类型int(*)[2](“指向 2 int 数组的指针”)。所以你的 func 需要接受这种类型的参数:

void func(int (*ptr)[2]);
// equivalently:
// void func(int ptr[][2]);

或者,您可以引用数组类型(“对 2 数组的 2 数组的引用”):

void func(int (&ptr)[2][2]);

确保更改声明和定义。

关于c++ - 如何通过c中的指针传递二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012020/

相关文章:

c - 重启程序的问题

c++ - 指向 char 数组的整数指针

C++ 模糊逻辑循环在第一次输入后递增

c++ - 如何清除opengl着色器缓存

c - sleep 必须在 tcdrain() 之后吗?

c++ 指针丢失指针引用

c - 为什么这段代码不返回垃圾值?

c++ - C++ 模板函数中根据类型名调用不同的构造函数

c++ - 如何获取在深度流中选择的 ROI 的 RGB 值

c - K&R练习1-8改进