const char*、char const*、char *const区别
撰写于 2018-05-18 修改于 2018-05-30 分类 C/C++
在c++的面试中,经常会被问到这个问题,const在不同位置到底有什么区别呢?有const修饰,其实无外乎指针是常量,或者指针指向的值是常量
const char *ptr
const修饰的是指针指向的值是常量,不可修改,但是需要注意的是,只是不能通过ptr来修改他指向的值,但是如果有另外一个非const的指针变量同样指向该变量,那该变量是可以修改这个值的,示例:1
2
3
4
5
6
7
8
9
10
11int main()
{
int i;
char str[] = "hello world";
const char *ptr = str;
/*可以通过str修改*/
str[0] = 'g';
/*不能通过ptr修改,以下会报错*/
ptr[0] = 's';
}
char const *ptr
同const char *ptr
char *const ptr
这个就是const指针,指针不能做任何修改。但是可以修改指针指向的内容。不再做示例。
总结:
- 就近原则,const跟谁最接近就是修饰谁(个人理解)