const char* a和char* const a的区别

 我来答
Frank_Zhou991
2017-07-17 · TA获得超过421个赞
知道小有建树答主
回答量:385
采纳率:88%
帮助的人:169万
展开全部
const char* a : 底层const
char *const a : 顶层const

底层const是说:
一个指针指向的对象的值,不可通过这个指针改变,或者一个左值引用绑定的对象的值,不可通过这个引用改变。
比如:
char z;
const char *a = &z;
char *b = &z;
const char &c = z;
char &d = z;
const限定:不可通过为*a和c赋值来改变z的值,但是可以通过*b和d改变z的值。

顶层const是说这个变量本身不可改变。
比如:
char *const a,这里const限定a不可改变。

1. 由于引用不是对象,只是别名,所以它只有底层const。
const int &e = z; // 不可通过为e赋值改变z的值。

2. 既不是指针也不是引用的变量,只有顶层const。
const int f = 10; // f本身不可改变。

3. 指针既可以有底层const也可以有顶层const,二者可以同时出现:
int *const g; // 顶层const,g本身不可改变。
const int *h; // 底层const,h指向的值,即*h不可改变。
const int *const i; // 底层+顶层const,i本身不可改变,*i也不可改变。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式