Kotori 发表于 2017-8-3 13:50:29

S1E27常量和指针笔记

本帖最后由 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级指针类似。实际中极少使用。

xjy99 发表于 2017-8-5 12:58:09

1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。

Kotori 发表于 2017-8-5 13:28:40

xjy99 发表于 2017-8-5 12:58
1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。

{:10_257:}应该是“没意义”,感谢指出问题

xjy99 发表于 2017-8-5 14:25:39

应该是我感谢你,记得真好,话说这里有"关注"吗?
页: [1]
查看完整版本: S1E27常量和指针笔记