c - 如何将 "pointer to a pointer"传递给需要 "pointer to array"的函数

标签 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

如何以 ptr 作为参数调用 foo()foo() 的原型(prototype)声明如下:

void foo(int arr[][MAX]);

最佳答案

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

二维数组(数组的数组)的内存布局与指向数组的指针数组的内存布局大不相同。

要么更改函数签名以接受 int**(可能还有大小信息),要么将 ptr 定义为适当大小的二维数组.

关于c - 如何将 "pointer to a pointer"传递给需要 "pointer to array"的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16395968/

相关文章:

c - 具有重叠操作的 Switch 中的多个案例

c++ - 使用循环调用具有不同名称的数组

c++ - 我可以获取数组的最后一个元素的地址吗?

c - C函数是否保证有固定的内存地址?

php - JavaScript 相当于按引用分配?

c++ - 为什么我的程序在 Linux 上运行时 splice syscall 失败,而在 gdb 中运行时成功?

c - FFmpeg:av_parser_parse2 做什么?

JavaScript Array 和 jQuery inArray 导致第一个数组值出现问题

c++ - 如何检测 Windows 8 Slate

arrays - 找到所需元素的最小数量,使其总和等于或超过 S