2015-05-21 48 views
2

我的教授有一些代碼上傳的網上,但我發現很難理解這個變量:如何解釋聲明char * x [5]?

char * x[5]; 

這是否代表5位X爲指針人物了? 所以,如果我要說

x[0]="Apple"; 

這將是有效的?

+1

是的,你是對的。 –

+1

'const'會更合適。不想意外嘗試修改字符串文字。 –

+2

[聲明x爲指向char的數組5](http://cdecl.ridiculousfish.com/?q=char+*+x%5B5%5D%3B) – chux

回答

2

是的,這是什麼,即5個char指針數組,而事實上

x[0] = "Apple"; 

是有效的。

+0

@serendip與編譯器無關,這是一個問題理解c中的字符串是什麼,試試'printf(「%sz \ n」,sizeof(「Apple」));',它打印5嗎? –

3

這是否代表5個空格x指向字符的指針?

是的。檢查此的一種方法是評估sizeof(x),sizeof(x[0])sizeof(*x[0])。在我的x64機器上,那些評估爲40,8和1指針的指針長度爲8個字節,因此char* x[5]聲明瞭五個指針。

x[0]="Apple";有效嗎?

是的,雖然它可能沒有達到你的預期。這裏,x[0]被設置爲指向字符串文字,並且x[1]x[4]的值未定義。請注意,因爲"Apple"是一個字符串文字,它是隻讀的;你不能保證能夠修改它。