C++中兩種字符串定義方式和區(qū)別介紹
前言
在學(xué)習(xí)字符串這方面的內(nèi)容時,發(fā)現(xiàn)字符串定義的兩種方式雖然內(nèi)容相同但還是有細微的區(qū)別
概念
字符串就是一串用雙引號連接起來的字符串字面值,簡稱為字符串
定義方式
上代碼
char acter1[]="Hello world";//第一種定義方式 char acter2[]={'H','e','l','l','o','w','o','r','l','d'}; 第二種定義方式
此時并不能看出這兩種定義方式的區(qū)別,拿到VS調(diào)試器看看
很明顯的看出,第一種定義方式末尾添加了一個字符'\0',而'\0'就是字符串的轉(zhuǎn)義字符
而第二種定義方式就沒有自動添加結(jié)束標(biāo)志
再看一下彼此的輸出結(jié)果
第一種定義方式輸出了我們想要的結(jié)果,而第二種定義方式則輸出了亂碼,我們不想要的字符
接下來我們來討論這個現(xiàn)象出現(xiàn)的原因
計算機的存儲方式
在計算機中,內(nèi)存是連續(xù)存儲的,我們創(chuàng)建一個數(shù)組出來,就是在內(nèi)存中隨機開辟出一塊內(nèi)存空間來
而這塊空間的前后有什么數(shù)據(jù),我們并不是很清楚
如上圖,在第二種定義方式的影響下,我們沒有設(shè)定字符串結(jié)束標(biāo)志,那么它就會在后面隨機生成,至于是在第幾位我們并不清楚,所以會出現(xiàn)亂碼
假如我們自己添加上'\0',結(jié)果就會出現(xiàn)我們想要的樣子,如下圖
而我們也只能控制后面的字符,而無法控制前面的字符
總結(jié)
推薦使用第一種定義方式
到此這篇關(guān)于C++中兩種字符串定義方式和區(qū)別介紹的文章就介紹到這了,更多相關(guān)C++字符串定義方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!