我目前正在通過K & R學習C.作者提出了一個重要的區別,即指針和數組的行爲相似,但它們不同,因爲指針是一個變量,可以指向不同的東西而陣列沒有這個能力。數組和指針不同
我明白這一點,但下面的代碼混淆了我一點點:
int len, nlines;
char *p, line[MAXLINES]; /* Confusing part */
我知道,當你傳遞一個數組給它衰變爲指針的功能,但在這裏,你可以聲明一個字符指針和字符數組在同一行,即使它們不同?也許我很迷惑自己,但這對我來說很奇怪。謝謝!
您可以在同一行聲明多個事情,如果他們都具有相同的「根」類型,例如'int w,x,y [5],z(void);'聲明兩個int,一個int數組和一個返回int的函數。有些人不鼓勵這種做法,每個聲明更喜歡一個標識符。 –
p是一個指向char的指針。行是char的MAXLINES大小的數組。 –
這裏令人困惑的是變量可以'修改'根類型。因此'char a,* b,** c'將會聲明一個單獨的字符'a',一個指向字符'b'的指針以及一個指向字符'c'的指針。類似地,當用於類似的聲明風格時,數組'修改'根類型。因此,這就是爲什麼我見過的大多數現代C開發人員推薦在[tadman的回答](http://stackoverflow.com/a/43334568/510036)中描述的聲明風格,而不是在單個聲明行上。 – Qix