在 C 中将 char 数组作为函数参数传递

passing char array as function parameters in C

我想将 arr2 复制到 arr 并将 arr 作为函数参数传递

void func(char * array)
{}

int main(void)
{
    int a;
    char arr[6][50];
    char arr2[][50]={"qweeeaa","bbbb","ffaa","eeaa","aaaa","ffaa"};

    for(a=0; a<6;a++)
    {
        strcpy(arr[a], arr2[a]);
    }

    func(arr);

    return 0;
}

但我不能将arr作为函数参数传递。我得到

[Warning] passing argument 1 of 'func' from incompatible pointer type [enabled by default]
[Note] expected 'char *' but argument is of type 'char (*)[50]'

我正在使用 MinGW GCC 4.8.1

您传递的类型与函数期望的类型不匹配。更改函数以接收指向数组的指针:

void func(char (*array)[50])
{

}

其他问题:

1) 您也没有为 func() 声明原型。在 C99 之前的模式中,编译器会假定函数 returns 为 int,这会导致问题。 在 C99 和 C11 中,缺少原型会使您的代码无效。因此,要么在源文件顶部声明原型,要么将函数移动到 main().

上方

2) 包含适当的 headers(<stdio.h> 用于 printf 等)。