結構體強制型別轉換

2021-06-22 16:24:45 字數 749 閱讀 2130

在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 ...