const:类型限定符,可以指定所修饰对象,不改变内容和在内存的存储地址.
1>修饰基本类型变量
如:const int x=10;//值和地址都不能变
再赋值.x=77;//错误
2>const指针
指针可用const修饰,可放在类型前,类型后,或是两边都放.
a>常量指针.对int* 用类型限定符const:
如:int number=10;
const int * p=&number;//p是一个常量指针,它所指的值不能通过p来修改.但可改变所指对象.
写成 int const *p也行吧?
补充上:常量的地址赋给常量指针
如:const int num=77;
const int * p=#//与上同,不过所指的是一个常量,它所指的对象也是可以修改的.
b>指针常量,这个指针的值不能改,即不能指向别的变量.要注意初始化.
如:int num=1;
int * const p=#//所指对象的值可变,但是指针的值不能变.
c>指向常量的指针常量.两边都放
如:const int * const p=#//都固定
3>const与函数
将const指针类型参数传入函数,表示函数不能改变传入的值
如:int lookup(const char* ar,const int len,const char key){}
const 与#define,用const可以像变量一样处理,可以在调试器中按名称引用,分配空间,具有类型.而#define是在编译前由预处理器处理,调试器不引用宏名,不分配空间,没有类型.
/////////////////////////////
const主要是为了程序的健壮型,减少程序出错. 最基本的用法: const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100) int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中 int* m = &a; //出错,常量只能用常指针 int c= 1;const int*pc = &c;//常指针可指向常量 const int* pa = &a; //指针指向的内容为常量(就是b的值不变) int const *a = &b; //指针指向的内容为常量