Ale*_*cer 2 c pointers multidimensional-array
我正在编写一个程序,该程序填充的数组char。如何使用指针,而不是将整个of数组传递char给function参数。
请参见以下代码:
#define COLUMN 20
#define ROW 10
void fillArray(char array[][COLUMN], char c)
{
int i = 0, j;
for (; i < ROW; i++)
for (j = 0; j < COLUMN; j++)
array[i][j] = c;
}
int main()
{
char array[ROW][COLUMN];
fillArray(array, '*');
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使用指针,而不是将整个char数组传递给' fillArray'函数的第一个参数?
有没有办法使用指针
是的,完全按照您的方式进行。:-)
这个宣言
void fillArray(char array[][COLUMN], char c)
Run Code Online (Sandbox Code Playgroud)
实际上与
void fillArray(char (*array)[COLUMN], char c)
Run Code Online (Sandbox Code Playgroud)
第二版告诉您,它array被定义为指向COLUMN chars 数组的指针。
一般规则是:
将数组传递给函数时,它会衰减为指向其第一个元素的指针。* 1
因此,当main()您传入时array,fillArray()则array衰减为指针a char[COLUMN],a char(*)[COLUMN]。
* 1相反,这意味着在C语言中,不可能将“ 整个数组 ”直接传递给函数。这只能通过将数组包装到中来实现struct。