2016-04-28 124 views
-4

這兩個定義有什麼區別?這兩個定義有什麼區別?

char *string = "MyString"; 
char string[] = "MyString"; 

盡我所知,第一個是一個指向字符串的指針。

+0

C沒有字符串類型。通過學習語言基礎知識可以找到答案。 – Olaf

+0

它們的類型和編譯器爲訪問該對象而創建的間接引用的數量。 – Jens

+0

另請參閱http://stackoverflow.com/questions/30533439/string-literals-vs-array-of-char-when-initializing-a-pointer –

回答

1

首先是一個指針,指向一個字符串,第二個是與所述字符串文字的內容初始化一個數組(其中順便說一句,當優化點恰好到string)。

第一個存在於程序存儲器的只讀段中,因此無法修改。

第二個是9個元素的數組,您可以修改9個元素中的任何一個,包括在您的問題的代碼中未明確設置的termnating null字節。