如果我创建一个
字符 [100][100];
并发送到函数 void func(char** a); 它说 char ( )[100] 不能转换为 char *。
我想象一个 char [100][100] 就像一个指向指针的指针。我错了吗?
谢谢
是的,你确实错了。achar[100][100]
是 (array of 100 char
) 的数组,当将其传递给函数时,它被转换为指向 (array of 100 char
) a 的指针char (*)[100]
。当作为函数参数传递时,数组到指针的转换只影响数组的最外层。
您可以将函数声明为采用该类型的参数,
void func(char (*)[100]);
如果您将始终传递具有 100 列的数组,或者如果您想保留函数的类型,则必须传递不同的参数。
您可以保持简单并像这样声明它:
void func(char a[100][100]);
如果您的系统支持可变长度数组,您可以执行以下操作:
void func(int nRows, int nCols, char a[nRows][nCols]);
第二种方法允许您将任何大小的二维数组传递给函数。