|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Kotori 于 2017-8-5 13:29 编辑
常量和指针
1>常量
常量,顾名思义,是一个固定值, 不可修改,只能读取数据。C语言中使用const关键字来定义常量。
- #define MAX 256 //过通宏定义来定义常量
- const int a = 1; //定义了常量a
- a = 2; //此时要改变a的值是不合法的
- const int *p = &a; //定义了常量指针,指针a
- *p = 2; //通过指针修改a的值是不合法的
复制代码
注意:1)const 只修饰后边离它最近的变量。上例中的const修饰*p,因此通过指针无法修改a的值。但p指针未被const修饰,p的指向可以修改。
2)在编程中要注意左值要比右值更严格,至少在同一级别。下方代码中左值*p没有被限制,因此可以通过p去修改b的值,这样把b定义为常量没意义,也会产生安全问题。
- const int b = 1;
- int *p = &b;
- *p = 2;
复制代码
2>指向非常量的常量指针
- int c = 1, d=2;
- int * const p = &c;
- *p = 3; //修改c的值合法
- p = &d; //修改p的指向不合法
复制代码
这里指针p被修饰,作为一个常量指针,因此指针的指向无法修改,但是修改指向的数据是合法的。
3>指向常量的常量指针
- int e = 1, f=2;
- const int * const p = &e;
- *p = 2; //修改指向的数据不合法
- p = &f; //修改指针指向也不合法
复制代码
和上面的相同,只不过此时指针的指向和指向的数据都被定义为常量,因此都是无法修改的。
4>指向“指向常量的常量指针”的指针
与之前的三级指针,N级指针类似。实际中极少使用。 |
评分
-
查看全部评分
|