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