在 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 等)。
我想将 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 等)。