日期:2014-05-16  浏览次数:20704 次

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