//1.const变量定义的方式
//const 在类型前
const int var = 1OO;
//const在类型后
int const var2 = 999;
//以上两种定义的方式没有区别
//const变量在定义的时候被初始化,当一个变量被const变量意味着该变量是一个常量,
不可修改,换句话说该变量只能做右值,不能做左值
int * const pp = null;
pp = &z; const在声明的时候初始化,指针不能再指向别的变量,即:value不能改
1、指向常量的指针,防止通过指针去修改变量的值
*p= 111;
2、指向常量的指针,该指针可以指向别的变量,指针的value是可以更改。
cp= &bb;
3.指向常量的指针,不能赋值给一个普通的指针
int= tempointer = pc;
下面一个很好的例子来解释const的用法
#include "stdafx.h"
int main(int argc, char* argv[])
{
//const 是一个不可改变的变量值
//定义基本类型的const变量,const位置放在哪儿都可以
constint x=2,y=3; //定义两个常数整数
intz=3; //定义一个非const变量 //初始化一个整型变量
constint *pc=&x; //定义一个指向常量的指针 //常指针 指针方向不可变,指向一个变量,不能指向其他指针
int* const cp=&z; //定义一个常指针,值不可以修改的,但是方向不可以变。
//定义一个非const指针
int*pp=&z; //普通的指针
z=y;//const 变量只能做右值,而不能做左值
//x=y; //无法进行转换,x是const变量,所以x的值是不可以更改。const修饰变量不可变
pc= &z; //OK,pc是一个指向常量的指针,不能通过该指针去修改指针所
//指向的内存空间的值,但是,该指针可以指向变量。
// *pc=10; //理由:pc是一个指向常量的指针,不能通过该指针去修改指针所
//指向的内存空间的值,但是,该指针可以指向变量。
// *pc=y; 理由:pc是一个指向常量的指针,不能通过该指针去修改指针所
//指向的内存空间的值,但是,该指针可以指向变量。
// *pc=5; 理由:pc是一个指向常量的指针,不能通过该指针去修改指针所
//指向的内存空间的值,但是,该指针可以指向变量。
pc=pp; //pc是一个指向常量的指针,pp是一个普通指针。
//用一个普通指针给一个指向常量的指针赋值是可以的。
pp=pc; //用一个指向常量的指针,赋值给一个普通指针,不可以。
//如果可以,那么就可以通过普通的指针去修改内存的值。
z=5; //给一个非const的变量赋值是可以的。
z=x; //用一个const的变量给一个非const变量赋值也是可以的。
*cp=x; //通过常指针去修改指针指向变量的值,原则上来讲师可以的。
//如果指向的变量时const的,那么不同编译会有不同的结果。
//cp=&x; //cp是常指针,指针的值不能被修改。给常指针赋值是错误的。
//pp=&x; //pp是非const指针,在标准的C语言中是可以给它赋值的。
//常指针不能给普通指针赋值
//pp=pc; //pc是指向常量指针,指向常量的指针不能赋值给一个普通的指针
pp=cp; //OK,cp是常指针,常指针可以赋值给一个普通指针。常指针是保护自己的
return0;
}
注:本博文为个人总结,如果有不当之处请指出,本文会有些散乱,请谅解!如需转载,请注明出处。
2012年3月7日