C语言中的const

最近在复习C语言,就来说说关于我以前才开始学C语言很迷糊的一个知识点:const关键字

const关键字是用来定义只读变量的,说 const 定义的是变量,但又相当于常量;说它定义的是常量,但又有变量的属性,所以可以叫常变量。用 const 定义常变量的方法很简单,就是在定义变量时前面加 const 即可,如下:

const int a=2;//语句1
int const b=5;//语句2

以上代码中,语句1就等于语句 2,没有差别。用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值。
在代码里,局部变量是存储在栈中的,静态变量是存储在静态存储区中,而经过 const 修饰过的变量存储在内存中的“只读数据段”中。只读数据段中存放着常量和只读变量等不可修改的量。

关于const修饰指针的时候,看下面这段代码:

int n1=2,n2=5,n3=8;
const int *p1=&n1;//语句3
p1++;//可以
n1=20;//可以
(*p1)=20;//不可以
int const *p2=&n2;//语句4
p2++;//可以
n2=20;//可以
(*p2)=20;//不可以
int *const p3=&n3;//语句5
p3++;//不可以
n3=20;//可以
(*p3)=20;//可以

其实语句3和语句4是一样的,因为这两个里面const修饰的是同一个。关于const遇见指针,你就记住:const修饰的是什么就看const的右边是什么。语句3和语句4里面,const修饰的都是*p(代码里面就是(*p1)和(*p2)),即你不可以通过指针去改变指针指向的那个变量,但是那个变量本身不是const修饰的,变量本身是可变的,所以语句3中n1=20是合法的,但是(*p1)=20是非法的。语句5里面const修饰的是p3这个指针,即你不可以改变这个指针的指向,但是这个指针指向的变量是可以被改变的,所以p3++是非法的,而n3=20是可以的。

欢迎交流:)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值