真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

結(jié)構(gòu)體-創(chuàng)新互聯(lián)

定義:結(jié)構(gòu)體

結(jié)構(gòu)(structure) 或叫 結(jié)構(gòu)體

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了景泰免費建站歡迎大家使用!

"結(jié)構(gòu)"是一種構(gòu)造類型,它是由若干"成員"組成的,每一個成員可以是一個基本數(shù)據(jù)類型或者又是一個構(gòu)造類型.

   結(jié)構(gòu)既是一種"構(gòu)造"而成的數(shù)據(jù)類型,那么在說明和使用之前必須先定義它,也就是構(gòu)造它,如同在說明和調(diào)用函數(shù)之前要先定義函數(shù)一樣

為什么要有結(jié)構(gòu)體?

結(jié)構(gòu)體可以把功能相同的數(shù)據(jù)組織起來,存在一起,用得時候方便.而且在調(diào)用函數(shù)時,若傳遞參數(shù)較多,傳一個結(jié)構(gòu)體相對而言簡單一些,很多系統(tǒng)自帶的函數(shù)必須用結(jié)構(gòu)體

定義結(jié)構(gòu)體的方法

定義一個結(jié)構(gòu)的一般形式為: struct 結(jié)構(gòu)名{ 成員列表 }; 例: 定義一個學(xué)生的結(jié)構(gòu) struct stu{ int num; char name[10]; //char *name; };

結(jié)構(gòu)體變量的定義有三種方法

1)先定義結(jié)構(gòu)體,然后在定義結(jié)構(gòu)體變量

    struct Student{
//學(xué)生學(xué)號
      int sno;
      //學(xué)生名稱
      char name[20];
      //學(xué)生年齡
      int age;
      //學(xué)生成績
      float score;
    };
    //注意:
     結(jié)構(gòu)體定義完成以后,計算機并不會給結(jié)構(gòu)體分配內(nèi)存空間
     會在定義結(jié)構(gòu)體變量后,分配存儲空間

    //結(jié)構(gòu)體變量定義格式:
      struct 結(jié)構(gòu)體名 結(jié)構(gòu)體變量名;
struct Student stu1;
2)定義結(jié)構(gòu)體的同時,定義結(jié)構(gòu)體變量

   格式:
    struct 結(jié)構(gòu)體名{

    }結(jié)構(gòu)體變量1,結(jié)構(gòu)體變量2...;

3)使用匿名結(jié)構(gòu)體定義結(jié)構(gòu)體變量

  struct{
  
  }結(jié)構(gòu)體變量1,結(jié)構(gòu)體變量2....;

結(jié)構(gòu)體變量中成員的訪問

形式:
    結(jié)構(gòu)變量名.成員名

結(jié)構(gòu)體變量初始化

struct Student{ int sno; char name[21]; int age; float score; }; 初始化: 1): struct Student str; str.sno=1; str.name="abc" //這種方式是錯誤的 strcpy(str.name,"abc"); str.score = 59.99f 2): 定義結(jié)構(gòu)體變量的同時,進行初始化 初始化值的順序要和定義結(jié)構(gòu)體的順序一致 struct Student stu2 ={8,"哈哈",2,4.5f} 問題: 1.stu1.name 占用多少個字節(jié) printf("%d ",sizeof(stu1.name)); //21 2.stub.name 字符串長度是多少 printf("%ld",strlen(stu1.name)); //9 //漢字的編碼問題 //utf-8 xcode中默認的中文的編碼是utf-8 ,國際通用編碼, 一個漢子占用3個字節(jié) //GB2312 GBK 國標 一個漢字占用2個字節(jié)

結(jié)構(gòu)體存儲原理

結(jié)構(gòu)體占用的內(nèi)存空間是每個成員占用的字節(jié)數(shù)之和(考慮對齊問題);

結(jié)構(gòu)體大小的計算方法和步驟

1)將結(jié)構(gòu)體內(nèi)所有數(shù)據(jù)成員的長度相加,記為sum_a; 2)將各數(shù)據(jù)成員為了內(nèi)存對齊,按各自對齊模數(shù)而填充的字節(jié)數(shù)累加到和sum_a上,記為sum_b。對齊模數(shù)是#pragma pack 指定的數(shù)值以及該數(shù)據(jù)成員自身長度中數(shù)值較小者.該數(shù)據(jù)相對起始位置應(yīng)該是對齊模式的整數(shù)倍 3)將和sum_b向結(jié)構(gòu)體模數(shù)對齊,該模數(shù)是#pragma pac指定的數(shù)值和結(jié)構(gòu)體內(nèi)部大的基本數(shù)據(jù)類型成員長度中數(shù)值較小者.結(jié)構(gòu)體的長度應(yīng)該是該模數(shù)的整數(shù)倍 所謂"對齊在N上" ,指定是"存放起始地址%N=0" struct A{ int a; //4 char b; //分配4個,用了1個,剩下3個 short c; //需要2個 }; printf("%ld ",sizeof(stuct A)); //上面的話是書上的 // 1)找對齊模數(shù) // 對齊模數(shù): 是結(jié)構(gòu)體中的基本數(shù)據(jù)類型中占用字節(jié)數(shù)大的那個 // 2)在計算結(jié)構(gòu)體變量中各個成員占用的字節(jié)和

枚舉也是一種結(jié)構(gòu)體

枚舉: 枚舉類型是一種基本數(shù)據(jù)類型,而不是一種構(gòu)造類型,因為它不能再分解任何基本類型 格式: enum 枚舉類型{枚舉值1,枚舉值2....} 枚舉變量的值: 枚舉類型定義完成以后,系統(tǒng)會自動給枚舉的每個元素都會賦值一個整形的初值 初值:從第一個元素開始,值為0,后面元素的值是其上一個元素值+1;
文章標題:結(jié)構(gòu)體-創(chuàng)新互聯(lián)
路徑分享:http://weahome.cn/article/depech.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部