0

如果我创建一个

字符 [100][100];

并发送到函数 void func(char** a); 它说 char ( )[100] 不能转换为 char *

我想象一个 char [100][100] 就像一个指向指针的指针。我错了吗?

谢谢

4

2 回答 2

2

是的,你确实错了。achar[100][100]是 (array of 100 char) 的数组,当将其传递给函数时,它被转换为指向 (array of 100 char) a 的指针char (*)[100]。当作为函数参数传递时,数组到指针的转换只影响数组的最外层。

您可以将函数声明为采用该类型的参数,

void func(char (*)[100]);

如果您将始终传递具有 100 列的数组,或者如果您想保留函数的类型,则必须传递不同的参数。

于 2012-10-04T19:20:39.883 回答
2

您可以保持简单并像这样声明它:

void func(char a[100][100]);

如果您的系统支持可变长度数组,您可以执行以下操作:

void func(int nRows, int nCols, char a[nRows][nCols]);

第二种方法允许您将任何大小的二维数组传递给函数。

于 2012-10-04T19:41:01.993 回答