char*与char[]到底有什么区别呢?


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM