返回介绍

6.3.2 指针常量

发布于 2025-04-11 22:32:59 字数 990 浏览 0 评论 0 收藏 0

如果在指针变量定义时,在星号之后、变量名之前使用了 const 关键字,则会定义出指针常量。这样,const 所修饰的是指针变量,而非指针。例如:

int a = 10, b = 20;
int *const pci = &a;

此时定义的 pci 就是指针常量,也就是经过 const 的修饰,pci 由指针变量变为指针常量。这就意味着,pci 不再是变量,而是常量了,它的值只能被访问而无法被修改。因此,在定义的时候应该对其初始化。因为对它进行赋值将是错误的行为,例如:

pci = &b;

此语句表示将变量 b 的地址赋值给指针常量 pci。如果对其编译,就会出现错误信息:

error: assignment of read-only variable 'pci'

错误信息的意思是,pci 是只读变量,不可对其赋值。

由于指针没被 const 修饰,因而我们通过指针来访问和修改它所指向的对象数据是没问题的,例如:

*pci = 100;
printf("Result: *pci = %d\n", *pci);

首先通过指针修改了变量 a 的数据,然后通过 printf 打印出指针指向的数据,即变量 a 的值。

程序运行结果如下:

Result: *pci = 100

可见,我们是可以通过指针常量 pci 来间接修改变量 a 的值的。

那么,来总结一下指针常量。const 修饰的是指针变量,而非指针,因此,对指针变量本身来说,它从变量变成了常量,因此,只可访问,不可修改;而通过指针对其所指向的对象数据是可访问、可修改的,如图 6.9 所示。

图 6.9 指针常量的访问权限

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。