C 中兩種字串定義方式和區別介紹

2022-09-20 08:57:09 字數 672 閱讀 3022

目錄

在學習字串這方面的內容時,發現字串定義的兩種方式雖然內容相同但還是有細微的區別

字串就是一串用雙引號連線起來的字串字面值,簡稱為字串

上**char acter1="hello world";//第一種定義方式

char acter2=; 第二種定義方式

此時並不能看出這兩種定義方式的區別,拿到vs偵錯程式看看

很明顯的看出,第一種定義方式末尾新增了乙個字元'\0',而'\0就是字串的轉義字元

而第二種定義方式就沒有自動新增結束標誌

再看一下彼此的輸出結果

第一種定義方式輸出了我們想要的結果,而www.cppcns.com第二種定義方式則輸出了亂碼,我們不想要的字元

接下來我們來討論這個現象出現的原因

在計算機中,記憶體是連續儲存的,我們建立乙個陣列出來,就是在記憶體中隨機開闢出一塊記憶體空間來

而這塊空間的前後有什麼資料www.cppcns.com,我們並不是很清楚cnksyaofce

如上圖,在第二種定義方式的影響下,我們沒有設定字串結束標誌,那麼它就會在後面隨機生成,至於是在第幾位我們並不清楚,所以會出現亂碼

假如我們自己新增上'\0',結果就會出現我們想要www.cppcns.com的樣子,如下圖

而我們也只能控制後面的字元,而無法控制前面的字元

推薦使用第一種定義方式

C語言中字串的兩種定義方式詳解

目錄 前兩種是正確的定義方式,第一種之所以沒有指定字元陣列長度的原因是編譯器能夠自己推斷出其長度,無需程式設計師自己設定,這也是我們比較推薦的一種定義方式,但注意記憶體長度編譯器一經判定就無法再次更改,接下來我們分析一下第三種編譯器為什麼會出現亂碼。相信大家都知道,字串是以 0 字元為結束標誌的,這...

字串陣列的兩種儲存方式

在c語言中,我們用 隨便寫一些內容 來表示乙個字串.編譯器會自動的在宿便寫的一些內容後面加上乙個 0 來儲存表示字串結束了 第一種儲存方式是陣列儲存.第二種儲存是字串指標的形式儲存 當我們把這兩種都宣告到變數區的時候,字串陣列在棧區 變數呆的地方 字串也會在棧區.而指標字串在棧區.指標字串指向的字串...

oracle 拼接字串的兩種方式

方式一 使用管道符 進行拼接 方式二 使用concat 函式 區別 方式一可以拼接多個字串 方式二只能將2個字串拼接到一起,方式二可以巢狀使用 concat concat 01 name id 2021年11月2日14 37 34 拼接單引號 在orcale中,2個單引號相當於1個單引號 測試一 兩...