C++中關於string、char*、char[ ]的說明


預備小知識:

1、在C++中const char* 與char*的區別

由於const char*與char*相比有更高的等級限制(const),因此char*的數據可以賦給const char*,但是反過來,const char*不能賦值給 char*

 

總結來說就是,const char*可以由char*賦值和替代,換言之當一個函數的參數為const char*時,該位置也可以傳入char*,反之不成立

 

2、在C++中”hello world”是一個const char*或者說是一個char [ ]的類型

3、字符數組可以通過C++的字符串賦值,字符指針不行(除非是const的字符指針)

 

 

正式開始:

C++中的string類是由STL標准模板庫提供,在string類中提供了string對象的構造器、string對象的方法等等。

(1)string類的類對象賦初始值的方式

String類中的對象構造器的實質是傳進了一個const char*的指針

默認構造,表示空字符串

 

直接賦值(”   ”本質就是const char*)

 

字符指針賦值(char*當然可以傳給const char*)

 

字符數組賦值(數組名的本質也是const char*)

 

 

因此我們以函數的形參類型與傳入的參數來得出string類對象、char*、char [ ]的關系如下

 

 

2021.12.5補充更新

補充一:今天發現當時的總結有誤,無論是什么類型都不能被string的對象賦值,因為基礎數據類型和string的類類型不能划等號,因此這也就是為什么無論以何種基礎數據類型作為

形參,string對象無法傳入的原因(本質原因)

補充二:const的問題只限於基礎數據類型使用C++的字符串進行初始化的時候,因為C++的字符串是const char*類型的(“aasasas”),這里C++字符串而不是指字符串類型的對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM