const限制修改数组值的疑问
通过数组原型的声明限制数组值的改变
程序代码:#include <stdio.h>
int add(int a[]);
int main()
{
const int a[2]={1,100};
//a[0]=a[0]+1;//限制成功,编译器报错不能改变数组值
add(a);//限制失败,a[0]变为2
printf("%d",a[0]);
return 0;
}
int add(int a[])
{
a[0]++;
return 0;
}可以看到调用add(a)后,限制失败。而我在声明和初始化数组的时候已经cosnt限制了,为什么限时失败了??
如果想在函数中限制改变数组,必须在函数声明和定义时的形参上限制吗?如下
程序代码:#include <stdio.h>
int add(const int *);//加const限制
int main()
{
const int a[2]={1,100};
//a[0]=a[0]+1;//限制成功,编译器报错不能改变数组值
add(a);
printf("%d",a[0]);
return 0;
}
int add(const int a[])//加const限制
{
a[0]++;//编译器报错,不能更改
return 0;
}为什么第一种不可以限制修改数组值呢??








