文字少说,直接看代码:
#include <iostream>
void f1(char *p1)
{}
void f2(const char *p2)
{}
void f3(char * const p3)
{}
void main()
{
char *p = “ABC” ;
const char *pp = "ABC";
f1(p);
f2(p);
f3(p);
f1(pp);
f2(pp);
f3(pp);
}
分析:我们知道p是一个指向静态存储区的char型指针且通过p可以读写“ABC”内存,但pp也是指向"ABC"内存,但是被赋予通过该指针只能可读,所以当分别调用三个不同的函数其中f1是一个可读可写的指针,f2只读指针,f3常指针。所以当将p和pp分别赋予他们的时候将出现不同的结果。
结果:char *p可以赋给char *p1(废话嘛);
char *p可以赋给const char *p2;但此时p2只能只读该区域
char *p可以赋给char * const p3;p3虽然是常指针,但也可以可读可写该区域
const char *pp 不可以赋给char *p1 和char * const p3;因为不能将只读的变为可读可写