指针可以是const
指针所指的变量也可以是const
指针是const
- 表示一旦得到了某个变量的地址,不能再指向其他变量
int * const j=i;//j的值不能再改变
*j=1;//i的值可以改变
*j++;//错误,指针不能进行运算
指针所指的值是const
- 表示不能通过指针去修改指针所指的变量
const int *p=&i;
*p=1;//error!(*p)是const
i=2;//OK,可以通过i修改值
p=&j;//OK
判断是指针还是值被const
- const在*前则是const指针
- const在*后则是const值
const int* p1=&i;
int const* p2=&i;
int *const p3=&i;
const 数组
- const int a[]={1,2,3,4,5,6};
- 数组变量已经是const的指针了,这里的const表明数组的每个单元都是const int
- 所以必须通过初始化进行赋值
- 因为把数组传入函数时传递时传递的是地址,所以那个函数内部可以修改数组的值
- 为了保护数组不被函数破坏可以设置参数为const
//main函数中不为const数组也可传入sum函数中
int sum(const int a[],int length);