91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

內存對齊模式與結構體

發布時間:2020-06-17 06:53:47 來源:網絡 閱讀:476 作者:匯天下豪杰 欄目:編程語言

1、結構體是一種新的數據類型,對C語言的數據類型進行了極大的擴充。

  struct STU{

   int age;

   char name[15];

  };

  struct STU  a;   //結構體實例

  struct STU  *b;  //結構體指針

  (1).可以通過a.age對其進行取成員的操作,b->age也可以進行結構體的操作。

  b->age存在問題,必須有一個結構體空間已經讓b指向,b的值為此結構體空間的地址。

  (2).a.name = "lilei"; false,因為name是數組名稱,指針常量不能賦值,解決方案:strcpy()函數;

  (3).字符串直接進行比較的話,是其地址的比較,沒有什么意義,用strcmp()函數進行比較,就是ASCII碼的比較了。

2、內存對齊模式:

  操作系統對于內存空間的分配,遵循如下原則:總是從2^n倍數為地址的字節處開始分配空間

  如:若按4B對其模式的話,則每個變量(結構體成員)的首地址總是從編號為4的整數倍的字節處開始分配空間。

  可設幾字節對齊如下:

  #pragma pack(push)    //保持原對齊格式

  #pragma pack(1)      //設定為n字節格式


  .......

  #pragma pack(pop)     //恢復為原對齊格式

3、結構體大小:

  (1).總大小是下一個類型的整數倍,否則用單字節補齊(單字節最多補到4/8,具體看結構體中最寬幾字節      //總大小指的是前面字節總數和當前的字節數之和。

  (2).結構體大小是最寬字節的整數倍(一般情況下為4或8)

  (3).上述兩個條件必須同時成立。若最終結果不成立的話,則補齊整數倍即可。

4、下面舉例論證結構體大小:

  (1). struct TEST{

     int a;

     short b;

     char c;

     struct TEST *next;

   };

  分析如下:4->2->1 (補1字節)->4   共12字節。

內存對齊模式與結構體

    

  (2).借用一中的結構體

  struct TEST1{

   short d;

   int e;

   char f;

   struct TEST g;

   struct TEST1 *next;

   struct TEST h;

   char i;

  };

  分析如下:2(補2字節)->4->1(補3字節)->12->4(想補也不能補,最多補到最寬單字節,在這最多到4字節,已經為4字節了,所以不能在補了)->12->1

  一共為:41字節,但是結構體大小為最寬單字節的整數倍,在這應為4的整數倍。

  最終,此結構體大小為44字節。

內存對齊模式與結構體   

   

  (3).借用一中的結構體

  struct TEST2{

   short d;

   int e;

   double f;

   struct TEST1 *next;

   struct TEST g;

   char i;

  };

  分析如下:2(補2字節)->4->8->4(補4字節:前面一共16字節,當前4字節,所以總共20字節,不是下一個數據類型(12)的整數倍,且最寬為8字節,可補4字節,構成整數倍)->12->1

  一共為37字節,但是結構體大小為最寬單字節的整數倍,在這應為8的整數倍。

  最終此結構體大小為40字節

內存對齊模式與結構體


結構體類型極大的擴充了C語言,是數據類型更加豐富多彩!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枣庄市| 台州市| 香河县| 通道| 深水埗区| 垫江县| 齐河县| 那坡县| 乌苏市| 梅州市| 建德市| 青铜峡市| 陆河县| 盐城市| 新疆| 同江市| 迭部县| 玉山县| 吉木乃县| 寿光市| 满洲里市| 田阳县| 车险| 启东市| 鹰潭市| 会泽县| 平安县| 新竹市| 米脂县| 黔西县| 谢通门县| 广平县| 成安县| 营山县| 自治县| 夹江县| 南溪县| 凤凰县| 九龙城区| 香格里拉县| 石渠县|