文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
6.3.2 指针常量
如果在指针变量定义时,在星号之后、变量名之前使用了 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论