【问题标题】:passing char array as function parameters in C在C中将char数组作为函数参数传递
【发布时间】:2015-09-26 02:12:50
【问题描述】:

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

【问题讨论】:

  • [c] 2D array parameter - 我觉得搜索不会产生一些有用的东西,这令人难以置信。

标签: c arrays parameter-passing


【解决方案1】:

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

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

}

其他问题:

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

2) 包括适当的标题(&lt;stdio.h&gt; 用于 printf 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2015-12-23
    • 2016-07-21
    • 1970-01-01
    • 2012-09-03
    • 2010-10-01
    相关资源
    最近更新 更多