1. 程式人生 > >關於struct在記憶體中的儲存結構及妙用

關於struct在記憶體中的儲存結構及妙用

在網上看到關於struct結構體在記憶體中的存放位置,很多都擺出一個例子。

Struct test{

char c;

int b;

double c;

};

問這個結構體佔多大位元組?如果改變一下 a,b,c的定義位置 ,又會怎樣?

基本上答案都是神馬16,24等,改變一下位置會使test的結構長度變化,因為是神馬位元組對其的原因。但經過測試,確實如此。原因已經有博主介紹很詳細了,就不說了。

1:其實我想說的是,struct定義的結構體在記憶體中是連續存放的。所以,陣列結構可以與結構體互相轉化。只需要強制轉化一下即可。但是要注意struct結構體位元組對其的問題,注意不同資料型別的定義先後。

2:利用陣列在記憶體中是連續存放這種特性,可以將兩種指標型別合併拼接。先定義一個足夠大小的陣列,在定義一個指標 指向該陣列頭

head,其偏移量為n。在定義一個指標,指向(head+n)。只需要這兩個指標單獨賦值,即可完成對整體的改變。

這都屬於利用某些特性,熟練使用指標完成的某些功能。