如何理解const char*,char const*,char*const等

 我来答
GiraKoo
2017-03-27 · 还没有任何签名哦
GiraKoo
采纳数:3949 获赞数:11110

向TA提问 私信TA
展开全部

虽然这些定义看上很类似,但是从某些细节方面可以进行准确的区分。

在这里介绍一个比较方便的记忆方法:

const距离变量名的距离代表const的修饰范围。

  • const char* a; 其中const是距离a较远的,*离a比较近,此时可以记忆为*a是const的。不能修改*a,a[0],a->形式的变更。但是a本身可以指向其他字符串。

  • char const * a; 其中const是距离a较远的,*离a比较近,此时可以记忆为*a是const的。不能修改*a,a[0],a->形式的变更。但是a本身可以指向其他字符串。

  • char*const a; 其中const是距离a较近的,*离a比较远,此时可以记忆为a是const的。不可以修改a的值。但是*a,a[0],a->是可以进行访问的。

int main(void)
{
char * const a = "a"; // a是const
char const * b = "b"; // *b是const
const char * c = "c"; // *c是const

a = "d"; // × 非法
b = "d"; // 合法
c = "d"; // 合法
a[0] = 'e'; // 合法
b[0] = 'e'; // × 非法
c[0] = 'e'; // × 非法

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式