C语言小细节---------const变量

【说明】

              我们知道const 是关键词可以将一个变量声明成常量,即它的值不可改变,那如果是要声明一个指针 指向常量怎么办?又或者指针本身是常量又怎么声明?

 

【最简单】

              const int a = 1;

              int const a  = 1;

              上边这2种方法没有任何区别,都是声明一个常量a  它的值不允许改变,

 

【指针】

               int onst * p = NULL;

               这是声明一个指向整型常量的指针,可以修改指针的值,但是不能改动指针所指的变量的值

               int * const  p = &a;

               这是一个常量指针,它自身的值不能改变,但是能改变所指向的变量的值

               int const * const p = &b;

               显然,这个就是指向常量的常量指针,也就是它自身是常量不能改变,它所指向的值也是常量不能改变!

 

【深入理解】

              #define XXX 1

              const int XXX = 1;

              这两个有区别吗?有!其实我们所谓的常量,即被const 修饰的变量 ,它本质上还是变量,它只能干变量干的事情,而无法直接当成常数使用,比如在case关键字后面是不能跟const 变量的,更具体得说,就是const 关键字其实并不是说声明一个常量,而是说声明一个只读变量!

             而#define 是宏定义,它后面的东西到时候会被扩展,也就是用到XXX的地方到时候就是1,也就是一个数值,是真正是常量,这个和const 声明的XXX有质的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值