什么意思?
const
表示常量,const
、*
、数据类型这三个可以任意组合:
首先,下面这两种写法等价,都是常量型 char
const char c;
char const c;
然后
char * str; //①指针可以变,指向的内容可以变
char const* str; //②指针可以变,指向的内容不可变
char *const str; //③指针不可变,指向的内容可以变
char const *const str; //④指针不可变,指向的内容不可变
初看一脸懵逼:这怎么记啊?!
可以试试从右向左理解来辅助记忆:
碰到*
读指针,指向
,碰到const
读常量型
char * str; //指针,指向 char
char const* str; //指针,指向常量型 char
char *const str; //常量型指针,指向 char
char const *const str; //常量型指针,指向常量型 char
有什么用?
char const* str
或const char* str
指向的字符串不可修改,在很多 C 标准库的函数里都能看到:
int printf( const char *format, ... );
加上 const
的好处是避免不小心修改了不应该修改的东西。加上 const
后就无法修改,会报错。
不过,要注意,不能把 const char*
赋给 char*
,否则会报警告或者错误。