C 結構體與陣列的資料轉換 下(socket)

2021-08-20 11:52:08 字數 1396 閱讀 5589

引言

經過上章的講解,已經知道了記憶體對齊。

那麼我們言歸正傳

(一) 結構體–>陣列

(二)陣列–>結構體

由於陣列儲存是連續的,所以在相互轉換的時候記憶體也要對齊

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,而它與結構體的轉換並...