我正在编写一个填充数组数组的程序char
。如何使用指针而不是将整个数组数组传递char
给函数参数。
请参阅以下代码:
#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, '*');
}
有没有办法使用指针而不是将整个char数组传递给' fillArray
'函数的第一个参数?
发布于 2019-05-13 15:41:58
有没有办法使用指针
是的,完全像你那样做。:-)
这个宣言
void fillArray(char array[][COLUMN], char c)
实际上是相同的
void fillArray(char (*array)[COLUMN], char c)
第二个版本告诉你,它array
被定义为指向COLUMN
char
s 数组的指针。
一般规则是:
当一个数组传递给一个函数时,它会被衰减为指向它的第一个元素的指针。* 1
因此,当main()
你传递array
到fillArray()
那时array
,腐烂到指针a char[COLUMN]
,到a char(*)[COLUMN]
。
* 1相反,这意味着在C中不可能将“ 整个数组 ”直接传递给函数。这只能通过将数组包装到一个中来实现struct
。
https://stackoverflow.com/questions/-100006713
复制相似问题