typedef struct conninfo{int go;int come;char a;} *Pconninfo;int main(int argc, char* argv[]){char buf[10]="123456789";int nTest=((Pconninfo)buf)->come;printf("%d",nTest);return 0;}
3 回答

寶慕林4294392
TA貢獻2021條經驗 獲得超8個贊
Pconninfo是指針指向的是地址
struct內的數據是順序存儲的,
go完了是come然后a
buf里的數據也是順序存儲的
Pconninfo)buf強制轉換,但指針指的還是那個地址
也就是說你算下地址,就應該知道了。

慕慕森
TA貢獻1856條經驗 獲得超17個贊
(Pconninfo)buf是強制類型轉換。把從數組buf的首地址開始的一段內存強制轉換成Pconninfo類型,
因為在前面使用了typedef ,實際上強制轉換成的數據類型是 struct conninfo的指針。
在使用指針輸出指針指向的結構體的私有變量時一般用(dd)->xx.的形式。
所以((Pconninfo)buf)->come的值最后代表的是經過強制類型轉換后的123456789的內存空間轉換成struct conninfo后所對應的come成員的值。
最后結果不確定,因為你并不知道具體是如何編碼的。比較麻煩
- 3 回答
- 0 關注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消