可能的重复:
将表示二维数组的指针传递给 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(使用前将#替换为@)