以下内容在C语言是成立的:
1、const char* 与char const* 的不同
const char* cp; //cp所指向的存储空间中的内容是不能通过cp指针去改变的
char const* cp; //指针变量cp的内容是不变的,即指针cp只能始终指向一个地址
2、const char*使用注意事项
const char* cp;
char c='a';
cp=&c;
c='b';
printf("c=%c\n",c);
说明:以上代码是正确的,输出结果时“c=b”。
const char* cp;
char c='a';
cp=&c;
*cp='b';
printf("c=%c\n",c);
说明:以上代码时错误的,因为字符型指针变量cp在定义时限定其指向的内容是不能通过cp去改变的(const关键字限定)。编译时会报错。
通过上面两个例子可以得出:常量指针所指向的内容不能通过常量指针自身去改变,但可以通过其他指向相同地址空间的指针去改变。
3、char const*的使用注意事项
char str[10]="test";
char const* cp=str;
printf("%s\n",cp);
说明:以上代码时正确的,输出结果是“test”。
char str[10]="test"; char const* cp;
cp=str; printf("%s\n",cp);
说明:以上代码时错误的,编译会报错。因为cp被定义为指针常量,并且常量是不可以在定义之后被赋值的,所以cp=str;这一句会出错。
通过以上两个例子可以得出:常量(包括指针常量)只能在定义时初始化。定义语句之后在赋值会出错。
注:在c++中,char const* 是可以正确使用的,有的参考处指出:c++只能写成char* chonst。