------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、什么是const?
const是一个类型修饰符
使用const修饰变量则可以让变量的值不能改变。
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。
2、const有什么主要的作用?
1)可以定义const变量,具有不可变性。
const int max = 100; max的值不能改变。
2)便于进行类型检查,使编译器对处理内容有更多了解,消除了些隐患。
3)可以避免意义模糊的数字出现,同样可以很方便的进行参数的调整和修改。
同宏定义一样,可以所知道不变则已,一变全变!
4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
5)可以节省空间,避免不必要的内存分配。
3、如何使用const?
1)修饰一般变量
一般变量是指简单类型的变量。这种变量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。
例如:
int constx = 2;
或
const intx = 2;
特殊情况:
#include<stdio.h>
intmain(int argc, const char * argv[]) {
const int a = 10;
int *p = &a;
*p = 20;
printf("a = %d\n",a);
printf("&a = %p\n",&a);
printf("*p = %d\n",*p);
printf("p = %p\n",p);
return 0;
}
结果:
a = 10
&a = 0x7fff5fbff79c
*p = 20
p = 0x7fff5fbff79c
Program ended with exit code: 0
2)修饰指针变量
(1)const修饰的指针变量指向可变,指向的变量的值不可变
int a = 10;
int b = 20;
const int *p = &a;
p = &b; // 可以
// *p = 100;不可以
(2)const修饰的指针变量,指针变量指向的变量值可以变,指向不能变
int * const p2 = &a;
*p2 = 100; //可以
//p2 = &b; 不可以
(3)const修饰的指针变量的指向和值,都不能改变。
const int * const p3 =&a;
// p3 = &b; 错误的
// *p3 = 100; 也是错误的
结论:
看const和*的位置来判断什么不能改变。
(1)如果const在*的左侧:表示指针变量指向的变量的值不能改变,但是指针指向可以改变。
(2)如果const在*的右侧:表示指针变量的指向不能改变,但是指向的变量的值可以改变。
(3)如果const出现在*的两侧,表示指针变量的指向和值都不能改变。