将多维数组传递给 C 中的函数
在此代码片段中,尝试将 C 风格的多维数组传递给需要整数指针数组的函数:
#include<stdio.h> void print(int *arr[], int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print(a,4,4); }
此代码可以在 C 中编译,但不能在 C 中编译。原因如下:
print(&a[0],4,4);
在 C 中,这种衰减不是允许。 数组类型 int4 不能隐式转换为指针类型 int**。这解释了错误消息:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
解决方案:
要将多维数组传递给 C 中的函数,必须显式转换它指向适当类型的指针。这可以使用以下技术来实现:
#include<stdio.h> void print(int **arr, int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print((int **)a,4,4); }
通过使用 (int )** 强制转换将数组显式转换为指针,代码现在可以按预期进行编译和运行C 和 C 。
以上是如何正确地将多维数组传递给 C 中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!