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"; 赋值才不会报错。