作用:const用于保护指针指向数据不被修改
测试代码1
显示数组的函数不小心修改了指针指向的值,这时候没有加const关键字,编译器不会报错
- #include
-
- void showar(int ar[]);
-
- int main(void)
- {
- int ar[4]={2,3,4,5};
- showar(ar);
- // muliar(ar);
-
- return 0;
-
- }
-
- void showar(int ar[]){
- int i;
- for(i=0;i<4;i++){
- ar[i]++;
- printf("ar[%d]:%d\n",i,ar[i]);
-
- }
-
- }
测试代码2
显示数组的函数不小心修改了指针指向的值,这时候 加const关键字,编译器报错
- #include
-
- void showar(const int ar[]);
-
- int main(void)
- {
- int ar[4]={2,3,4,5};
- showar(ar);
- // muliar(ar);
-
- return 0;
-
- }
-
- void showar(const int ar[]){
- int i;
- for(i=0;i<4;i++){
- ar[i]++;
- printf("ar[%d]:%d\n",i,ar[i]);
-
- }
-
- }

const的限定有限,限定的是自己,限定的是常量,别人要修改也管不着。
const int *p=ar;
这样限定的是指针p不能修改指向的值 *p 或 p[2],但是仍然可以修改p的指向或者ar
int * const p=ar;
这样限定的是指针p能修改 指向的值*p / p[2],但是不可以修改p的指向
const int * const p=ar;
这样限定的是指针p不能修改 指向的值*p / p[2],也不可以修改p的指向