查看: 462|回复: 0

[经验] C 的 const 用法

[复制链接]

该用户从未签到

发表于 2021-1-22 17:22:02 | 显示全部楼层 |阅读模式
分享到:
(1)只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
(2)只有一个const,如果const位于*右侧,表示指针本身是常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。
(3)两个const,*左右各一个,表示指针和指针所指数据都不能修改。
-----------------------------------------------------------------------------------------------------------------------------------
const int *a;   表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量;也可以写成int const* a,含义相同。


int * const a;  表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。
char str[] = "test";   
const char* p = str;  //non-const p, const  data
char* const p = str;  //const p, non-const data


const int *p1;
int const *p2;
int * const p3;
在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;
在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条



手机版|小黑屋|与非网

GMT+8, 2024-11-24 05:18 , Processed in 0.118174 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.