Char矩阵作为参数发送

时间:2012-10-04 19:18:37

标签: c pointers

如果我创建

char a [100] [100];

并发送到函数void func(char ** a); 它表示char()[100]无法转换为char *

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

由于

2 个答案:

答案 0 :(得分:2)

是的,你确实错了。 a char[100][100]是一个数组(数组为100 char),当它传递给函数时,它被转换为指向(数组为100 char)的指针,{{{ 1}}。将数组作为函数参数传递时,将数组转换为指针只会影响数组的最外层。

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

char (*)[100]

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

答案 1 :(得分:2)

你可以保持简单,并声明如下:

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

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

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

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