C语言——const

本文详细探讨了C++中const关键字的用法,包括const修饰基本类型、数组、指针及复杂类型。通过实例分析了const如何影响变量的可变性,并提供了两个实用的辨析技巧,帮助读者理解const在不同场景下的行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  const是constant的缩写,表示海枯石烂,恒定不变,一旦相伴,永不变心。只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。


  虽然const相对比较容易理解,但是const不仅仅可以用来修饰基本类型,它还经常修饰一些构造类型和指针及其参合体,如数组、指针、指针数组、结构体数组、结构体指针数组等。一旦和这些复杂类型结合起来,还是具有一定迷惑性的,下面我们一一进行分析。

(1)const int a = 10;
(2)int const a = 10;
(3)const int a[10] = {1,2,3,4,5,6,7,8,9,10};
(4)const int *p;
(5)int *const p;
(6)const struct devices dev[5];
(7)struct devices const *dev[5];

看到上面的例子,我相信很多小伙伴都觉得头大。不过,我这里有两招辨别的小技巧:

*将类型去掉

*看const修饰谁,谁的值就不能去掉

(1)去掉类型int变成“const a = 10”,a的值不变;
(2)去掉类型int变成“const a = 10”,a的值不变,和(1)的效果一样;
(3)去掉类型int变成“const a[10]”,a数组里的值不变;
(4)const修饰 * p,去掉类型int变成“const * p”,p指向的空间里的值不变;
(5)const修饰p,去掉类型int * 变成“const p”,指针变量p里的值不变,也就是说p不能指向其他地址,但是p指向空间里的值可以变;
(6)去掉类型struct devices变成“const dev[5]”,dev[5]数组里的值不变;
(7)这是一个devices结构体类型的指针数组,它拥有5个devices结构体指针,每个指针指向一个devices结构体,const修饰 *dev[5],去掉类型struct devices 变成“const *dev[5]”,指针数组dev中每个元素指向的空间里的值不变。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香蕉牛奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值