例子
char *p = "Kpple";
cout << p << endl;
cout << *p << endl;
int pi[]= {1,2};
cout << pi << endl;
cout << *pi<< endl;
结果如下:
疑问:
我们知道若直接给 int指针赋值,如:int *ptr =5;这是不允许的。
但是看例子,得知 char *p = “Kpple”;是直接可以赋值成功,并且:
*p代表着 “Kpple”里面的第1个字符,P代表所有的字符。
这是为什么呢?
对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式”*ptr”所指向的地址。但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量ptr。
即正确顺序是:1.分配内存给字符指针;2.分配内存给字符串;3.将字符串首地址赋值给字符指针