如何将指针用于char数组?

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'函数的第一个参数?

alk*_*alk 5

有没有办法使用指针

是的,完全按照您的方式进行。:-)

这个宣言

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()您传入时arrayfillArray()array衰减为指针a char[COLUMN],a char(*)[COLUMN]


* 1相反,这意味着在C语言中,不可能将“ 整个数组 ”直接传递给函数。这只能通过将数组包装到中来实现struct