函数的参数列表里为啥不能用常量?
定义了一个函数是这样的:
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); 函数定义是 int data[] 参数是const int data[]
类型都不一样啊 不知道你怎么能够编译通过的啊
[解决办法]
在作为参数时, 数组和指针是等价的.
所以你在函数里修改了值, 函数外的值也会发生变化.
[解决办法]
non-const可以自动转为const,但const不能直接转为non-const
[解决办法]
忘记说了,const可以直接转为non-const,前提是发生拷贝,也就是值传递。