2011-10-12 193 views
5

是什麼我一直使用的第一對於char指針數組C變量聲明

char *a[10]; 

char *(a[10]); 

之間的差,但現在我發現代碼中使用的第二。因爲我不確定它是否是相同的東西,所以我打印sizeof()兩者都返回80(64位操作系統),所以我傾向於相信兩者是相同的(一個字符指針數組)。

但是,因爲我找不到任何解釋在線或任何使用*([])語法,我正在尋找一些確認。

由於

回答

11

兩個是等效的且代表指針的10元件陣列char

char (*a)[10]對比,它是指向char的10元素數組的指針。

如果有疑問,可以使用cdecl來解讀C聲明。在Unix上它通常作爲命令行工具提供。還有一個online version

1

char *a[10];char *(a[10]);是一樣的。爲了說清楚,可以這樣說,char *a[10];pointer array的10,後來是10的數組,其中all are pointers!你會發現,兩者都是以不同的方式說出來的。