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级指针类似。实际中极少使用。 1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。 xjy99 发表于 2017-8-5 12:58
1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。
{:10_257:}应该是“没意义”,感谢指出问题 应该是我感谢你,记得真好,话说这里有"关注"吗?
页:
[1]