如何将"指针指针"传递给期望"指向数组的指针"的函数

con*_*rol 1 c arrays pointers

考虑一下这段代码:

#define MAX 4
............
............ 
int** ptr = (int**)malloc(sizeof(int*)*MAX);
*ptr = (int*)malloc(sizeof(int)*MAX);
// Assigned values to the pointer successfully
Run Code Online (Sandbox Code Playgroud)

如何foo()使用ptras参数调用?foo()原型已声明如下:

void foo(int arr[][MAX]);
Run Code Online (Sandbox Code Playgroud)

San*_*ker 6

您不能将ptr参数作为参数传递给该foo函数.

二维数组(数组数组)的内存布局与数组指针数组的内存布局完全不同.

更改函数签名以接受int**(也可能是大小信息),或者将其定义ptr为适当大小的二维数组.