在c語言中,結構體和int等型別一樣,都是資料型別。其他型別怎麼轉換,結構體就怎麼轉換,沒有什麼特殊的地方。
樓主可能想知道的不是結構體怎樣強制轉換這個問題吧,猜測,樓主想知道如下幾個問題:
如果將乙個結構體強制型別轉換為另乙個結構體(或者型別),那這個結構體的成員會怎樣了?
如果將乙個結構體強制型別轉換為另乙個結構體(或者型別),那麼這個結構體成員的數值又會是什麼了?
解答:1、結構體的本質是:我們和c語言約定了一段記憶體空間的長短,及其內容的安排。假設下面兩個結構體:
struct a1
;struct a2
;接著,用struct a1和struct a2定義變數,並賦初值:
struct a1 x = ;
struct a2 y = ;
現在最重要的是,要知道x和y的記憶體情況:
x的記憶體安排是:前4b,後1b;
y的記憶體安排是:前1b,後4b。
如果有struct a2 z;
z.a = ((struct a2)x).a;
那麼,c語言會對x的空間,
按照struct a2的格局
進行解釋:
也就是說,將x的第乙個位元組看成第乙個成員,且按ascii碼處理資料,而將後面的4b看成第二個成員,並按補碼格式解釋資料。
這裡的關鍵是:
計算機是機器,它絕對忠實地遵守與人「先前」的約定,而不像人那樣善變!
注意,要把自己當成計算機;看問題的角度改變了,那答案自然就容易得到了。
結構體型別強制轉換
include include include int p t typedef struct chann s chann t typedef struct mpoachann s mpoachann t void main chann t p chann t p1 mpoachann t q mpo...
結構體指標強制型別轉換
這兩天整結構體指標強制型別轉換的問題,真好碰到乙個的乙個問題,我把這個問題例項化實現,發現這個例項對弄清楚下面三個問題有很大幫助 1,結構體指標強制型別轉換的問題 2,char字元cout輸出的問題 3,結構體資料對齊的問題 具體下面的例項有分析 include using namespace st...
關於結構體型別資料的強制型別轉換
有如下結構體定義 typedef struct cemsg cemsg typedef struct msgmsg typedef struct msg pmsg p void ap getmsg msg d osmsgptr,cemsg d cemsgptr 注 其中cpy dest,src,n ...