C語言 若有定義語句:int a[2][3],*p[3];則以下語句中正確的是A.p=a;B.p[0]=a;C.p[

題目:

C語言
若有定義語句:int a[2][3],*p[3];則以下語句中正確的是()
A.p=a;B.p[0]=a;
C.p[0]=&a[1][2]; D.p[1]=&a;
但是我在其他地方看到似乎A這種表達也沒有錯誤,還有*p[3]是不是等價於*(p[3])?

解答:

int a[2][3], *p[3];
分析:
對於a來說,毫無疑問,a是一個二維數組,a的值指向int類型的起始地址.
對於p,首先p先與'[ ]'結合 p[3],表示p是一個數組,p再與'*'結合成' *p[3] ',表示p數組裡面存放的時指針變量,最後與int類型結合成' int *p[3] ',表示數組存放的時指向int類型的指針.
p[0]=&a[1][2];
所以p[0]的值是一個指向int類型的指針.
而a[1][2]的值是一個int類型,再加上'&'(取地址符)得到的就也是一個指向int類型的指針了.
所以p[0]=&a[1][2];成立.
建議ZL看看 《讓你不再害怕指針》
回答完畢.

添加新評論

暱稱
郵箱
網站