常量指针与指针常量(const用法)

本文深入探讨了C语言中const的使用,特别是如何区别指针常量和常量指针的概念,并通过实例解释它们在实际编程中的应用。

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

初了解,const是在C语言中为了提高程序的安全性和可靠性而用来修饰数据类型的,const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的,即相当于限定为“只读”的状态。


指针常量

即指向常量的指针,该指针所指向的是一个常量,常量的值不能通过解引用来改变,但是这个指针的指向可以改变
如:

const int *pa;
int const *pa;

这两条语句实现的功能是相同的,均声明了一个指向常量的指针,这个常量pa本身是先被赋值了的,就不能通过解引用来改变pa的值,即*pa=d(d是一个新的值)是错的,想要通过访问pa中存储的常量的地址来间接改变常量的值是不能实现的,但是pa=&d(d是一个已声明的变量或常量);就是对的,因为指针的指向可以改变,指针内储存的地址是可以改变的。


常量指针

常量指针即指针本身的值是常量,即他储存的地址一旦定了就不能改变,但可以通过解引用来改变指针所指向的变量的值,即可以通过访问这个固定的地址来间接改变变量的值。
如:

int *const pa =&n;

这条语句的意思就是声明了一个常量指针pa初始化指向的是n,那么他就只能指向n,而不能再指向其他的变量了,即pa=&c(c是其他已声明的变量)就是错的不能实现的,但是可以通过解引用来改变变量的值,即*pa=d(d是已声明的整型变量)是可实现的,相当于通过访问指针储存的地址即n的地址来改变变量n的值。


技巧

在了解这个概念时,有看到一些前辈给的经验技巧来使这个概念变得通俗容易区分。
1.有说看const离谁更近一点,在忽略数据类型的情况下离变量近,那他限定的就是指针,即为常量指针,离指针*更近,那他限定的就是变量的值,即为指针常量。
2.也有说,看const在 * 的哪一侧,若const在 * 号的左侧,那么就是指针常量,若const在 * 的右侧,则为常量指针。
判断方法各有不同,但原理都是一样的。


例题

下列哪两个是等同的

int b;

A const int* a = &b;

B const* int a = &b;

C const int* const a = &b;

D int const* const a = &b;

解析:答案应该是CD。A选项声明的是指向常量的指针,即指针常量;B选项是一个错误的表示方法;C选项和D选项都表示声明的是指针本身为常量,他所指向的也是一个常量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值