一、const char * ptr;
定义一个指向字符常变量的指针,这里,ptr是一个指向 const char* 类型的指针变量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改。但是ptr的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对ptr而言,这个值是常量。实验如下:ptr指向str,而str不是const,可以直接通过str变量来修改str的值,但是不能通过ptr指针来修改。(*ptr不能作左值,但是ptr可以作左值)
在下面这种情况下char* ptr和const char* ptr等效
char *a="214124";这种是无法修改的,因为这个字符串是存放在内存的常量区 (char*相当于constant char*)
char a[]="asdas"; 这个是可以修改的,因为这个字符串是存放在栈中的
二、char const *ptr;
此种写法和const char *等价
三、char * const ptr;
定义一个指向字符的指针常数,即const指针,实验得知,不能修改ptr指针,但是可以修改该指针指向的内容。(ptr不能作左值,但是*ptr可以作左值)