色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

結構體大小的獲取

CHANBAEK ? 來源:小木編程 ? 作者:小木之 ? 2023-03-14 17:30 ? 次閱讀

結構體大小的獲取

  • 我們使用sizeof()函數來獲取結構體的大小
#include


struct test1
{
  int a; // 0 1 2 3
  char b; // 4
  float c; // 8 9 10 11
};


struct test2
{
  int a; // 0 1 2 3
  char b; // 4
  char d; // 5
  char e; // 6
  float c; // 8 9 10 11
};

int main()
{
  struct test1 t1;
  struct test2 t2;  
  int s1=sizeof(t1);
  int s2=sizeof(t2);
  printf("s1=%d,s2=%d",s1,s2);


  return 0;
}

輸出結果:

s1=12,s2=12
  • 從上面的例子我們可以看到,t1,t2
    兩個結構體的內部的成員變量構成明明不一樣,但是最終結構體的大小卻是相同的,都是12字節。
  • 這就是因為結構體內存對齊的原因,使得構成并不相同的兩個結構體在大小上卻是相同的。
  • 其中t2中成員變量d,e占據的內存,是在結構體內存對齊后補齊的空位,因此結構體整體的大小并沒有增加。
  • 正是因為結構體存在內存對齊,所以無法對結構體進行比較高效的直接比較,也就是無法對兩個結構體整體進行比較。
  • 那么為了比較結構體,我們就想到了對結構體內部成員變量的比較。

結構體的比較

既然要對結構體的成員變量進行比較,那么我們就要先能夠獲取成員變量。

// 獲取方法
變量名.成員變量名
// 對于t1,我們如果想要獲取t1的內部成員變量a,那么我們就可以這樣寫:
t1.a
#include


struct test1
{
  int a;
  char b;
  float c; 
};


// 那么當我們判斷兩個test1類型的結構體t1,t2是否相等時,就可以這么寫
int isEqual(test1 x,test1 y)
{
  if(x.a==y.a && x.b==y.b && x.c==y.c)
  {
    return 1;  // 相等返回 1
  }
  else return 0;  // 不相等返回 0
 } 

int main()
{
  struct test1 t1={1,'a',2.1};   // 聲明兩個test1類型的結構體變量
  struct test1 t2={1,'a',2.1};
  int r=isEqual(t1,t2);  // 調用函數進行比較
  printf("%d",r);
  return 0;
}

輸出結果:

1
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3037

    瀏覽量

    74143
  • 函數
    +關注

    關注

    3

    文章

    4338

    瀏覽量

    62743
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28408
  • sizeof
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6439
  • 結構體
    +關注

    關注

    1

    文章

    130

    瀏覽量

    10856
收藏 人收藏

    評論

    相關推薦

    【武漢華嵌】結構的sizeof問題

    和編譯器有關。就一般情況而言,主要有以下三個原則:1) 結構變量的首地址能夠被其最寬基本類型成員的大小所整除;2) 結構每個成員相對于
    發表于 03-22 16:26

    labview調用dll獲取硬件信息結構求教

    想調用winmm.dll中的waveOutGetDevCaps獲取聲卡信息,但是里面有結構數據,嘗試了幾次都失敗告終,求大蝦指教。MMRESULT waveOutGetDevCaps
    發表于 01-14 10:20

    關于操作系統的結構指針使用方式

    結構的變量的指針和結構體內部成員的指針的關系其實他們兩者在內存地址上是有一定的數值關系的。其實結構變量的地址和
    發表于 10-06 23:44

    漫談C語言結構

    不是8 byte。  所以,結構成員變量的放置順序影響著結構所占的內存空間的大小。一個結構
    發表于 11-15 15:59

    使用結構的主要作用

    結構作用(STM32)來源:正點原子MDK 中很多地方使用結構以及結構指針,下面總結一下其
    發表于 08-24 07:54

    關于labview傳入參數到DLL結構

    labview給DLL中結構傳入參數,要保證字節對齊下面是注意事項,很關鍵:labview中層次結構數據類型(例如,簇)中的數組和字符串始終包括大小信息。所以簇內存中包含字符串的
    發表于 11-08 20:30

    結構變量的定義與使用變量訪問結構成員

    知識點回顧關于找最大公共子串的兩種解題方法結構的定義(3種)結構變量的定義與使用變量訪問結構
    發表于 12-17 07:10

    消息隊列傳遞結構指針和結構異同

    FreeRTOS消息隊列 傳遞結構指針和結構異同1 消息隊列傳遞結構指針和
    發表于 02-11 07:02

    C語言中創建一個結構其實際占用的內存空間大小是多少呢?

    際占用的內存空間大小是多少呢?示例代碼如下:struct S{int i;char c;int j;};要正確計算結構大小,首先需要了解數據對齊的原理。數據對齊
    發表于 09-29 11:57

    如何設計只有數據字段的結構

    的實例時,結構的數據成員會按其聲明的順序連續存儲。然而,這個聲明的順序也是有學問的,順序不同結構大小可能有很大差別,數據成員的訪問性能
    的頭像 發表于 08-23 09:37 ?1574次閱讀
    如何設計只有數據字段的<b class='flag-5'>結構</b><b class='flag-5'>體</b>

    一個經典的結構和聯合體共用實例

    結構占用的內存大小,首先和編譯器的系統位數有關系,類似于CPU是 64 bits 還是 32 bits 的情形;其次,結構需要考慮字節對
    的頭像 發表于 05-04 11:49 ?699次閱讀
    一個經典的<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體共用實例

    C語言計算結構占用的空間大小

    計算以下兩個結構所占空間大小分別是多少?
    發表于 08-24 16:03 ?472次閱讀

    經典 C 語言編程,結構和聯合體如何共用?

    中可以 使用 sizeof 進行獲取,默認為字節對齊的大小。 聯合體 聯合體的參數共享同一個內存地址,所占的內存大小完全是由聯合體中參數類型決定字長,然后數據共享,內存共享等。 結構
    的頭像 發表于 01-11 18:24 ?1418次閱讀
    經典 C 語言編程,<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體如何共用?

    你是否真的了解結構占用了多少字節?

    結構成員所占內存空間大小一般情況下,如果想知道結構成員的內存占用情況需要:1、先用結構
    的頭像 發表于 06-04 08:04 ?517次閱讀
    你是否真的了解<b class='flag-5'>結構</b><b class='flag-5'>體</b>占用了多少字節?

    結構成員的順序會影響結構大小

    相同的結構成員,如果把順序調整一下,會不會影響結構大小? 答案是會的,這主要跟字節對齊有關。 比如這樣的
    的頭像 發表于 11-25 16:24 ?214次閱讀
    主站蜘蛛池模板: 国产精品日韩欧美一区二区三区| 美女pk精子2小游戏| 日韩av国产av欧美天堂社区| 白嫩美女直冒白浆| 秋霞午夜理论理论福利无码| xxxxxx视频| 羞羞漫画在线播放| 精品一二三区久久AAA片| 一个人的免费完整在线观看HD| 免费色片播放器| 国产精品亚洲精品久久国语| 正在播放国产精品| 日本妈妈xxxx| 久久日本精品国产精品| 俄罗斯女人Z0Z0极品| 伊人久久中文大香线蕉综合| 日本一本在线播放| 久久免费看少妇高潮A片JA| 成人高清护士在线播放| 中国老头oldday tv| 亚洲国产成人在线| 漂亮的av女演员| 久久视频精品38在线播放| 国产伦精品一区二区免费| china中国gay偷拍| 最新国自产拍 高清完整版| 亚洲薄码区| 香蕉59tv视频| 色色色999| 日本特殊精油按摩| 欧美特级特黄a大片免费| 久久久96人妻无码精品蜜桃| 国产一区在线观看免费| 国产CHINESE HD精品| sm主人调教揉花蒂H| avove主播| 9亚洲欧洲免费无码在线| 91次元黄色观看| 7723日本高清完整版在线观看| 一级毛片免费播放| 亚洲一区二区女搞男|