const int count=50; //此时变量的值不可以修改
2.保护数组
const int array[]={1,2,3,4,5}
3.指向const的指针不能用于改变值
double rate[3]={1.32,1.89,9.63}
const double * pointer=rate;//p指向数组的首元素
*pointer=23.6; //不允许
rate[0]=99.99; //允许,因为rate未被const限定
pointer++; //允许
4.把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的
int rate[5]={1,2,3,4,5}
const int locked[4]={1,2,3,4,5}
const int *pointer=rate; //有效
pointer=locked; //有效
pointer=&rate[1]; //有效
5.只能把非const 数据的地址赋给普通的指针
int rate[5]={1,2,3,4,5}
const int locked[4]={1,2,3,4,5}
double *pointer=rate; //有效
double *pointer=locked; //无效 当然无效,必须无效,const修饰的数组本意就是只读,如果可以将地址赋值给指针,那指针岂不是可以修改数组的值,这岂不是自相矛盾?
pointer=&rate[1]; //有效
6.声明并初始化一个不能指向别处的指针
int array[5]={1,2,3,4,5}
int * const pointer=array;//p指向数组的开始
pointer=&array[1]; //不允许,因为指针不可以指向别处
*array=50; //允许
7.声明指针既不能改变它所指向的值,也不能修改指向地址上的值
int array[5]={1,2,3,4,5}
const int * const pointer=array;
pointer=&array[1]; //不允许
*pointer=100; //不允许
8.对形参使用const
int sum(const int ar[],int n);
const告诉编译器,该函数不能修改ar指向数组中的内容。如果在函数中不小心使用类似ar[i]++这样的表达式,编译器会捕捉到这样的信息,并生成一条错误信息。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)