如何理解const char*,char const*,char*const等
展开全部
虽然这些定义看上很类似,但是从某些细节方面可以进行准确的区分。
在这里介绍一个比较方便的记忆方法:
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询