问题:
在 C 中,将多维 C 风格数组传递给需要 int* 数组的函数会产生编译器结果错误。
原因:
像 int4 这样的多维数组不能直接转换为 int* 类型的指针,这就是 int arr函数中的[]代表
示例:
#include<stdio.h> void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Error in C++ }
C 会报错:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
解决方案:
在 C 和 C 中,将多维数组作为 int** 传递不是 有效的。为了有效地实现这一点,必须使用以下技术将数组转换为指针:
注意:
忽略编译器警告或未能实现正确的转换可能会导致未定义的行为和不可预测的结果。
以上是为什么在 C 中将 C 风格的二维数组传递给需要 `int` 的函数不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!