我的教授有一些代碼上傳的網上,但我發現很難理解這個變量:如何解釋聲明char * x [5]?
char * x[5];
這是否代表5位X爲指針人物了? 所以,如果我要說
x[0]="Apple";
這將是有效的?
我的教授有一些代碼上傳的網上,但我發現很難理解這個變量:如何解釋聲明char * x [5]?
char * x[5];
這是否代表5位X爲指針人物了? 所以,如果我要說
x[0]="Apple";
這將是有效的?
是的,這是什麼,即5個char
指針數組,而事實上
x[0] = "Apple";
是有效的。
@serendip與編譯器無關,這是一個問題理解c中的字符串是什麼,試試'printf(「%sz \ n」,sizeof(「Apple」));',它打印5嗎? –
這是否代表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"
是一個字符串文字,它是隻讀的;你不能保證能夠修改它。
是的,你是對的。 –
'const'會更合適。不想意外嘗試修改字符串文字。 –
[聲明x爲指向char的數組5](http://cdecl.ridiculousfish.com/?q=char+*+x%5B5%5D%3B) – chux