2011-05-10 76 views
0
char short_string[] = "abc" 
char short_string[] = {'a', 'b', 'c'} 

我認爲不同的是,第二行是一個switch語句,它需要用戶輸入(ab或c,因爲第一行更多是一個語句....是嗎?使用字符串文字和不同字符列表初始化數組聲明時有什麼區別?

+7

不是遠程。你正在學習C++的哪本書? – 2011-05-10 09:33:46

+1

唯一的區別是第二個沒有空終止符...但我第二個unapersson的問題:) – 2011-05-10 09:34:52

+5

[我只能重複自己](http://stackoverflow.com/q/5947805/1968):獲得一本C++書籍並學習該語言的基礎知識。我們不能在這裏教你每一個方面。你甚至缺乏對語言最基本的理解。 – 2011-05-10 09:35:13

回答

9

號這不是一個switch語句 這兩條線都與初始化變量聲明不同的是,:。

char short_string[] = "abc" 

Declares宣佈SHORT_STRING空結尾的C字符串
內存轉儲:0x61, 0x62, 0x63, 0x00
可變長度以字節:4

雖然第二行:

char short_string[] = {'a', 'b', 'c'} 

聲明SHORT_STRING作爲字節數組。
存儲器轉儲:0x61, 0x62, 0x63
可變長度以字節爲單位:3

0

第一條語句聲明並初始化一個字符串與內容abc(包括終止零) - 這是一個字符數組,它是四個字符長。

第二條語句聲明瞭一個字符數組三個大字abc - 這是幾乎同樣的事情,第一,除了沒有終止零(不正確的字符串)。

另請參見:C/C++中的所有語句都必須以分號結尾。

0

不同的是第一個選項將分配三個字符和結尾的空('00' ) 第二個選項將分配相同的三個字符,但沒有結尾的空,並會造成問題是您嘗試使用任何的str ...功能家族。

相關問題