数组实参传递给指针形参的问题
今天写了一个小程序,大致如下:
int main(void)
{
char *src = "InformationSecurity";
char dst[30] = {0};
int key = 5;
dst = ety_copy(src, dst, key);
printf("the dst:%s\n", dst);
return 0;
}
函数的原型:char * ety_copy(char *src, char *dst, int key);
为什么我在编译的时候会出现以下的情况,烦请大侠解惑。这时候的数组名应该和指针是等价的啊
[root@Liu-Michael work]# gcc ety_copy.c
ety_copy.c: 在函数‘main’中:
ety_copy.c:43:6: 错误:将‘char *’赋值给‘char[30]’时类型不兼容
------解决方案--------------------
错误在 dst = ety_copy(src, dst, key);
ety_copy(src, dst, key)函数的返回值是一个字符指针变量,而dst是字符数组的首地址,是一个常量,是不允许赋值的。
------解决方案--------------------
dst = ety_copy(src, dst, key);
把前面的dst去掉
ety_copy(src, dst, key);