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

时间:2015-07-08 09:02:20

标签: c arrays parameter-passing

我想将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

1 个答案:

答案 0 :(得分:4)

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

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

}

其他问题:

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

2)包括适当的标题(<stdio.h>用于printf等)。