首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-05-03 
数组实参传递给指针形参的问题今天写了一个小程序,大致如下:int main(void){char *src InformationSecu

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

热点排行