我正在编写一个函数,需要我传递一个二维整数数组作为参数,其中行数可变但列数固定。
我最初打算使用:
void function(int (*array)[cols]) {...}
将指针传递给整数数组,这将允许我使用
malloc()
根据所需的行数为每行分配内存。然而,问题是关于列的。
为行分配内存时,编译器是否会考虑指定大小的列(由
cols
给出)的适当内存,为所有行列分配足够的空间,从而利用连续内存?
如果没有,那就意味着我必须分别为每行的每一列分配内存,在这种情况下,直接使用
(*array)[]
而不使用 cols
变量不是更好,甚至更好双指针**array
?
这些方法的功能或效率会有什么差异吗?
提前非常感谢!
**array
- 指针到指针优点:
缺点:
(*array)[cols]
- 指向数组的指针优点:
缺点: