如何在c中通过指针传递二维数组[重复]

2024-03-22

可能的重复:
将表示二维数组的指针传递给 C++ 中的函数 https://stackoverflow.com/questions/5329107/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]("array of 2 array of 2 int") 其名称将衰减为指向其第一个元素的指针,该元素的类型为int(*)[2](“指向 2 int 数组的指针”)。所以你的func需要采用这种类型的参数:

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

或者,您可以引用数组类型(“引用 array of 2 array of 2 int”):

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

确保更改声明和定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在c中通过指针传递二维数组[重复] 的相关文章

随机推荐