C++中 char*个人理解

语句 char * str = "walker";

对于这个声明方式,会造成的误解是:声明了一个字符指针(它会指向一个位置),将“字符串”赋值给 指针表达式"*str"所指向的地址。

但正解是:声明了一个字符指针后,并用字符串常量的第一个字符的地址赋值给指针变量a。

 

即正确顺序是:

1.分配内存给字符指针;

2.分配内存给字符串;

3.将字符串首地址赋值给字符指针;

 

执行完 char * str;

相当于 str 就是一个字符串数组变量,并且可以随意 str="" 进行二次赋值,

*str 也就相当于取了 str 字符串数组的第一个元素的值,也就是w。

执行 &str 才是可以取到指向 str 字符串数组变量的地址。

在vs2019中需要把符合模式调为no,char * str=""; 才不会报错。

 

另外,

如果先声明 str[]="";

再用 str[]="walker"; 去进行二次赋值则会出现错误,只有当初始化 str[]="walker"; 赋值才不会报错。

posted @ 2021-09-08 23:06  ring5  阅读(1529)  评论(0)    收藏  举报