1.const作用
作用:const用于保护指针指向数据不被修改
测试代码1
显示数组的函数不小心修改了指针指向的值,这时候没有加const关键字,编译器不会报错
#include <stdio.h>
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 <stdio.h>
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]);
}
}
2.const与#define区别
const的限定有限,限定的是自己,限定的是常量,别人要修改也管不着。
3.const的3种用法
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的指向