如何理解const char*,char const*,char*const等
答案:1 悬赏:20 手机版
解决时间 2021-03-29 04:58
- 提问者网友:捧腹剧
- 2021-03-28 06:49
如何理解const char*,char const*,char*const等
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-03-28 08:14
虽然这些定义看上很类似,但是从某些细节方面可以进行准确的区分。
在这里介绍一个比较方便的记忆方法:
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;
}
在这里介绍一个比较方便的记忆方法:
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;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |