鱼C论坛

 找回密码
 立即注册
查看: 2492|回复: 3

[技术交流] S1E27常量和指针笔记

[复制链接]
发表于 2017-8-3 13:50:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Kotori 于 2017-8-5 13:29 编辑

常量和指针
  1>常量
       常量,顾名思义,是一个固定值, 不可修改,只能读取数据。C语言中使用const关键字来定义常量。
  1. #define MAX 256        //过通宏定义来定义常量
  2. const int a  = 1;        //定义了常量a
  3. a = 2;        //此时要改变a的值是不合法的
  4. const int *p = &a;        //定义了常量指针,指针a
  5. *p = 2;        //通过指针修改a的值是不合法的
复制代码

        注意:1)const 只修饰后边离它最近的变量。上例中的const修饰*p,因此通过指针无法修改a的值。但p指针未被const修饰,p的指向可以修改。
                  2)在编程中要注意左值要比右值更严格,至少在同一级别。下方代码中左值*p没有被限制,因此可以通过p去修改b的值,这样把b定义为常量没意义,也会产生安全问题。
  1. const int b = 1;
  2. int *p = &b;
  3. *p = 2;
复制代码

  2>指向非常量的常量指针
  1. int c = 1, d=2;
  2. int * const p = &c;
  3. *p = 3;    //修改c的值合法
  4. p = &d;         //修改p的指向不合法
复制代码

        这里指针p被修饰,作为一个常量指针,因此指针的指向无法修改,但是修改指向的数据是合法的。
  3>指向常量的常量指针
  1. int e = 1, f=2;
  2. const int * const p = &e;
  3. *p = 2;        //修改指向的数据不合法
  4. p = &f;        //修改指针指向也不合法
复制代码

        和上面的相同,只不过此时指针的指向和指向的数据都被定义为常量,因此都是无法修改的。
4>指向“指向常量的常量指针”的指针
        与之前的三级指针,N级指针类似。实际中极少使用。

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-5 12:58:09 | 显示全部楼层
1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-5 13:28:40 | 显示全部楼层
xjy99 发表于 2017-8-5 12:58
1>常量 注意:2)中:“这样把b定义为常量的意义”没看懂。。。

应该是“没意义”,感谢指出问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-5 14:25:39 From FishC Mobile | 显示全部楼层
应该是我感谢你,记得真好,话说这里有"关注"吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 11:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表