【C语言】const char * 和 char *const 有什么区别?

文章介绍了C语言中const关键字与指针的组合使用,包括constchar*、charconst*等四种情况,强调了从右向左读取的方式来帮助记忆。const的使用能保护内存中的数据不被意外修改,常用于函数参数以表明参数不应被修改。同时指出,constchar*不能赋值给char*,以防止类型不匹配的错误。

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

什么意思?

const 表示常量,const*、数据类型这三个可以任意组合:

首先,下面这两种写法等价,都是常量型 char

const char c;
char const c;

然后

char * str;            //①指针可以变,指向的内容可以变
char const* str;       //②指针可以变,指向的内容不可变
char *const str;       //③指针不可变,指向的内容可以变
char const *const str; //④指针不可变,指向的内容不可变

初看一脸懵逼:这怎么记啊?!

可以试试从右向左理解来辅助记忆:
碰到*指针,指向,碰到const常量型

char * str;            //指针,指向 char
char const* str;       //指针,指向常量型 char
char *const str;       //常量型指针,指向 char
char const *const str; //常量型指针,指向常量型 char

有什么用?

char const* strconst char* str指向的字符串不可修改,在很多 C 标准库的函数里都能看到:

int printf( const char *format, ... );

加上 const 的好处是避免不小心修改了不应该修改的东西。加上 const 后就无法修改,会报错。
不过,要注意,不能把 const char* 赋给 char*,否则会报警告或者错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值