const char*、char const*、char *const区别 [ 奔跑的蜗牛 ]

撰写于 2018-05-18 修改于 2018-05-30 分类 C/C++ 标签 C/C++

在c++的面试中,经常会被问到这个问题,const在不同位置到底有什么区别呢?有const修饰,其实无外乎指针是常量,或者指针指向的值是常量

const char *ptr

const修饰的是指针指向的值是常量,不可修改,但是需要注意的是,只是不能通过ptr来修改他指向的值,但是如果有另外一个非const的指针变量同样指向该变量,那该变量是可以修改这个值的,示例:

1
2
3
4
5
6
7
8
9
10
11
int ()
{
int i;
char str[] = "hello world";
const char *ptr = str;


str[0] = 'g';
/*不能通过ptr修改,以下会报错*/
ptr[0] = 's';
}

char const *ptr

同const char *ptr

char *const ptr

这个就是const指针,指针不能做任何修改。但是可以修改指针指向的内容。不再做示例。

总结:

  1. 就近原则,const跟谁最接近就是修饰谁(个人理解)