2016-01-10 125 views
-1

我想了解爲什麼數組變量不能指向任何其他地方?爲什麼數組變量不能指向其他地方?

示例代碼:

char s[] = "How big is it"; 
const char *t = s; 

這是代碼,我創建了一個樣本陣列s[]併爲其分配一個值「它有多大」,現在我創造一個字符指針數組併爲它指定的值的地址。

現在,當我說這句話時,編譯器將引發我一個錯誤:

s=t;  ----> compiler error 

這是爲什麼?是否因爲字符串文字引用會丟失?

+0

閱讀任何有關C編程的好書。你不能分配給一個數組(直觀地說,因爲's'的sizeof'比任何指針的sizeof'大很多,在我的機器上這個指針總是8。問問你自己,編譯器應該如何翻譯你正在編寫的東西! –

+2

「現在我創建了一個字符指針數組」你沒有。您創建一個字符指針。 「爲什麼會這樣?是否因爲字符串字面引用會丟失?」不,那是因爲你不能分配給數組。 –

+1

這是一個語言設計決定:數組不可分配。另外,數組不會*指向數據,它們*是數據。 – juanchopanza

回答

0

=星座都有用C兩種不同的含義:初始化分配

當你寫char s[]="How big is it";,你初始化一個新的數組與字符串文字的字符,包括終止null。

而語言根本不允許分配到一個數組。它無論如何都沒有意義,因爲一旦定義,數組就會標識一個內存位置。然後你可以只分配數組元素或使用在底層(memxx,strxx)下執行的函數。

相關問題