首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数的参数列表里为何不能用常量

2013-12-04 
函数的参数列表里为啥不能用常量?定义了一个函数是这样的:void add(int data[], int addend[], int* resul

函数的参数列表里为啥不能用常量?
定义了一个函数是这样的:
void add(int data[], int addend[], int* result);
引用是这样的:
const int data[]={1,2,3,4,5,6},addend[]={6,5,4,3,2,1};
.....
int main(void)

  ...
  add(data,addend,result);
  ...
}
函数的具体实现里对data和addend里元素的值做了改变,可是这与外面的data和addend数组无关啊~
[解决办法]
传入的是数组的地址,当然不能修改data中的内容,而且你的函数设计和调用明显矛盾,明明是常量数据为何又要去修改它,真是匪夷所思!

引用:
定义了一个函数是这样的:
void add(int data[], int addend[], int* result);
引用是这样的:
const int data[]={1,2,3,4,5,6},addend[]={6,5,4,3,2,1};
.....
int main(void)

  ...
  add(data,addend,result);
  ...
}
函数的具体实现里对data和addend里元素的值做了改变,可是这与外面的data和addend数组无关啊~

[解决办法]
void add(int data[], int addend[], int* result); 函数定义是 int data[] 参数是const int data[]
类型都不一样啊 不知道你怎么能够编译通过的啊
[解决办法]
在作为参数时, 数组和指针是等价的.
所以你在函数里修改了值, 函数外的值也会发生变化.
[解决办法]
non-const可以自动转为const,但const不能直接转为non-const
[解决办法]
忘记说了,const可以直接转为non-const,前提是发生拷贝,也就是值传递。

热点排行