读书人

数组实参传递给指针形参的有关问题

发布时间: 2012-05-03 14:06:56 作者: rapoo

数组实参传递给指针形参的问题
今天写了一个小程序,大致如下:
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);

读书人网 >UNIXLINUX

热点推荐