将非动态二维数组传递给C中的函数?

时间:2011-05-01 04:21:44

标签: c pointers pass-by-reference multidimensional-array

如何将二维数组传递给函数?
当我通过它时,它在visual studio调试器中显示为一维数组。 问题是,当我索引sel_col [i]时,它会得到下一个字符,而不是下一个字。

这是我的函数原型:

void print_row(char sel_col[MAX_IDENT_LEN][MAX_IDENT_LEN]);

这是我的2d数组的定义,我称之为:

char sel_col[MAX_NUM_COL][MAX_IDENT_LEN];
print_row(sel_col); 

解决方案1:删除第一个尺寸标识符。没用。

void print_row(char sel_col[][MAX_IDENT_LEN]);

解决方案2:通过引用将其传递给函数。没用。

    print_row(&sel_col); 

解决方案3:使用双指针。我不想走这条路,因为我会重写我的大部分代码。

1 个答案:

答案 0 :(得分:1)

在C中,二维数组看起来像一维数组; char[3][3]实际上是一个只有9个元素长的单维数组,并且编译器执行一些数学运算将两个较小的索引转换为一个较大的索引。您的函数原型看起来正确。出了什么问题?你得到编译错误了吗?