若有定義 1 2 | typedef char T[ 10 ] ;
T * a ;
|
上述定義中a的類型與下面選項(xiàng)中完全相同的是?
char ( *a) [ 10 ] ;
解析:
typedef char T[10] ;
T * a ;
這里T是什么類型呢,把名字抹去不就是類型了嗎? char [10],T為一個(gè) char 數(shù)組。
那么T * a中啊為什么類型呢,T * ,T為數(shù)組,是一個(gè)整體,a為指向這個(gè)數(shù)組的一個(gè)指針嘍。
也就是a為指向一個(gè)是個(gè)元素的數(shù)組的指針。
首先,a是指針,不是數(shù)組,然后a是數(shù)組指針,不僅僅是指針。所以A,C排除了。那么剩下兩項(xiàng)B,D.
char (*a) [10] ;
char *a [10] ;
這里就是一個(gè)優(yōu)先級(jí)的問題了,[]優(yōu)先級(jí)要高于解引用運(yùn)算符。所以第一個(gè)a為指針,指向具有十個(gè) char 元素的指針。
第二個(gè)為數(shù)組,每個(gè)元素都是指針,每個(gè)指針指向一個(gè) char 變量。
這就是函數(shù)指針和函數(shù)也有類似的問題。分析優(yōu)先級(jí)即可游刃而解。
|