const char *ptr; //定义一个指向字符常量的指针,*ptr为const型,不可变,即指针指向的内容不可以通过ptr来修改,但是可以通过别的方式来修改。
char const *ptr; //同上
char * const ptr; //定义一个指向字符的指针常量 : ptr为const型,不可变; *ptr可变
举例如下:
const char *ptr;
#include <stdio.h>
int main()
{
const char *ptr; //*ptr是const型,不可变
char str[11]="helloworld";
ptr=str;
printf("%s\n",ptr);
ptr[0]='w';
//str[0]='w';
printf("%s\n",ptr);
return 0;
}
执行结果:
结果表明:*ptr是const型,不可以修改
修改代码如下:
#include <stdio.h>
int main()
{
const char *ptr; //*ptr是const型,不可变
char str[11]="helloworld";
ptr=str;
printf("%s\n",ptr);
//ptr[0]='w';
str[0]='w'; //ptr指向的值却并非const型,可以通过其他方式修改
printf("%s\n",ptr);
return 0;
}
执行结果:
结果表明:ptr指向的对象(不同于*ptr)并非const型,可以改变
char const *ptr; //同上
char * const ptr;
#include <stdio.h>
int main()
{
char str[]="helloworld";
char str2[]="test";
char * const ptr=str; //ptr是const型,不可变;*ptr可变
printf("%s\n",ptr);
/* ptr=str2;
printf("%s\n",ptr); */
ptr[0]='w';
printf("%s\n",ptr);
return 0;
}
执行结果:
结果表明:*ptr不是const型,可以变化。
将代码8,9行的注释去掉,试一下ptr是否可以改变
执行结果如下:
结果表明:ptr是const型,不可以修改