C++中兩種字符串定義方式和區(qū)別介紹
前言
在學(xué)習(xí)字符串這方面的內(nèi)容時(shí),發(fā)現(xiàn)字符串定義的兩種方式雖然內(nèi)容相同但還是有細(xì)微的區(qū)別
概念
字符串就是一串用雙引號連接起來的字符串字面值,簡稱為字符串
定義方式
上代碼
char acter1[]="Hello world";//第一種定義方式
char acter2[]={'H','e','l','l','o','w','o','r','l','d'}; 第二種定義方式此時(shí)并不能看出這兩種定義方式的區(qū)別,拿到VS調(diào)試器看看

很明顯的看出,第一種定義方式末尾添加了一個(gè)字符'\0',而'\0'就是字符串的轉(zhuǎn)義字符

而第二種定義方式就沒有自動添加結(jié)束標(biāo)志
再看一下彼此的輸出結(jié)果

第一種定義方式輸出了我們想要的結(jié)果,而第二種定義方式則輸出了亂碼,我們不想要的字符
接下來我們來討論這個(gè)現(xiàn)象出現(xiàn)的原因
計(jì)算機(jī)的存儲方式
在計(jì)算機(jī)中,內(nèi)存是連續(xù)存儲的,我們創(chuàng)建一個(gè)數(shù)組出來,就是在內(nèi)存中隨機(jī)開辟出一塊內(nèi)存空間來
而這塊空間的前后有什么數(shù)據(jù),我們并不是很清楚

如上圖,在第二種定義方式的影響下,我們沒有設(shè)定字符串結(jié)束標(biāo)志,那么它就會在后面隨機(jī)生成,至于是在第幾位我們并不清楚,所以會出現(xiàn)亂碼
假如我們自己添加上'\0',結(jié)果就會出現(xiàn)我們想要的樣子,如下圖

而我們也只能控制后面的字符,而無法控制前面的字符
總結(jié)
推薦使用第一種定義方式
到此這篇關(guān)于C++中兩種字符串定義方式和區(qū)別介紹的文章就介紹到這了,更多相關(guān)C++字符串定義方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?OpenCV實(shí)現(xiàn)二維碼檢測功能
這篇文章主要介紹了如何利用C++?OpenCV實(shí)現(xiàn)二維碼檢測功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-01-01
c語言中malloc、realloc與calloc 的區(qū)別以及聯(lián)系
以下是對c語言中的malloc函數(shù),realloc函數(shù)與calloc函數(shù)的區(qū)別以及它們之間的聯(lián)系進(jìn)行了介紹,需要的朋友可以過來參考下2013-08-08
C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡單的學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Linux UDP服務(wù)端和客戶端程序的實(shí)現(xiàn)
這篇文章主要介紹了Linux UDP服務(wù)端和客戶端程序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
C語言利用鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言如何利用鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-11-11
mfc入門教程之實(shí)現(xiàn)一個(gè)簡單的計(jì)算器
這篇文章主要介紹了mfc入門教程,手把手教你如何開發(fā)一個(gè)簡單的計(jì)算器,需要的朋友可以參考下2019-04-04
在Visual Studio Code中配置C++編譯環(huán)境的問題
關(guān)于Visual Studio Code對C++環(huán)境的配置方法應(yīng)該有好多種,我這里用到了其中的兩種,具體內(nèi)容詳情文中給大家詳細(xì)介紹,對Visual Studio Code配置C++編譯環(huán)境相關(guān)知識感興趣的朋友一起看看吧2021-07-07

