char指针的疑问

来源:互联网 发布:不吃清真食品 知乎 编辑:程序博客网 时间:2024/05/21 07:13

例子

    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.将字符串首地址赋值给字符指针

0 0