引言
經過上章的講解,已經知道了記憶體對齊。
那麼我們言歸正傳
(一) 結構體–>陣列
(二)陣列–>結構體
由於陣列儲存是連續的,所以在相互轉換的時候記憶體也要對齊
struct st_temp
;st_temp temp;
temp.iage = 4;
temp.iyear= 2018;
temp.imonth= 6;
int szbuf[3];
memset(szbuf,0,sizeof(szbuf));
memcpy(szbuf,&temp,sizeof(st_temp));
下面是兩張截圖
下面是兩張截圖
這裡注意的細節是:memcpy的賦值是按照記憶體位址來賦值的
int iage;
int iyear;
int imonth;
所以調式的資料是沒有問題的,只是預設按照字母排序。
陣列與結構體的轉換,常用到通訊中
byte陣列與結構體的轉換。
把結構體與陣列之間的轉換
二維陣列和一維陣列的轉換很簡單,直接是強制轉換即可,例如 include include unsigned char aa 4 4 int main 列印結果 如果是定義乙個結構體呢 struct cc main函式裡面定義變數初始化 struct cc dd data2 7,data3 8,dat...
C 結構體和位元組陣列的轉換
c 結構體和位元組陣列的轉換 在寫c tcp通訊程式時,傳送資料時,只能傳送byte陣列,處理起來比較麻煩不說,如果是和vc6.0等寫的程式通訊的話,很多的都是傳送結構體,在vc6.0中可以很方便的把乙個char陣列轉換為乙個結構體,而在c 卻不能直接把byte陣列轉換為結構體,要在c 中傳送結構體...
C 結構體和位元組陣列的轉換
本文主要起源於專案從c 轉到c 時碰到的問題,即套接字傳送資訊時的型別轉換。在c 中,套接字傳送和接收的型別為字元陣列char,而char與結構體struct可以直接進行顯式轉換就可以 在c 中,sockets類和networkstream類傳送和接收的型別為位元組陣列byte,而它與結構體的轉換並...