1.
char *p = “China”;
char *的本质是一个char类型的指针。
以上面的为例子,定义一个char类型的指针p,指向China的首地址,所以说char *无法存储字符串,只是指向某个字符或者字符串。
需要注意的是char *只可以修改指向,不可以修改指向内容。
举个例子:
p[0] = ‘A’; 修改了指向内容,这个不允许
p = “America”; 修改了指向,这个是允许的。
这是为什么呢?
由于字符串是存放在字符串常量区的,当你用字符串对其进行赋值的时候,其指向的地址就已经发生了改变。
当然,如果你实在需要修改你也可以自己new一个,举个例子:
//错误:
char *p = new char[6];
p = “China”;
p[5] = ‘k’;
//正确:
char *p = new char[6];
strcpy_s(p, 6, “China”); //或者strcpy(p, “China”);
p[5] = ‘k’; //或者 *(p + 5) = ‘k’;
2.
char p[] = “China”;
其本质是char类型的数组,可以存储字符串,可以任意修改其内容。
举个例子:
char p[] = “China”;
p[5] = ‘k’; //或者 *(p + 5) = ‘k’;
————————————————
版权声明:本文为CSDN博主「我喜欢小黄花」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/orange_monkey/article/details/105264361