日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

typedef,结构体,共用体,联合体

發布時間:2024/9/27 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 typedef,结构体,共用体,联合体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

typedef的用途:

  • 封裝數據類型,方便移植

  • 簡化函數指針的定義

  • 結構體:不同類的型元素匯聚。

    1)、在聲明類型的同時定義變量:

    struct結構體名{

    ??成員列表

    }變量名列表;

    ?

    2)、直接定義結構體類型變量

    struct

    {

    ????成員列表

    }變量名表列;

    ?

    指向結構體變量的指針

    定義形式:struct結構體名 *結構體指針名;

    例如:struct student *p;

    #define_CRT_SECURE_NO_WARNINGS??//去掉安全檢查

    #include<stdio.h>

    #include<stdlib.h>???????

    ?

    structmydata

    {

    ???intnum;

    ???charstr[100];

    };

    ?

    voidmain()

    {

    ???//int a;

    ???//int *p;

    ???//struct mydata *p;

    ???//printf("%d", sizeof(p));

    ?

    ???structmydatamd;??//實例化結構體

    ???md.num = 99;

    ???sprintf(md.str,"gogogo");

    ???printf("md.num=%d,md.str=%s",md.num,md.str);??//打印數據

    ?

    ???structmydata *p;??//p存儲地址 struct mydata決定了大小還有如何解析

    ???printf("\n%d",sizeof(p));

    ?

    ???p = &md;//結構體指針初始化,存儲地址

    ???printf("\n(*p).num=%d,(*p).str = %s", (*p).num, (*p).str);

    ???printf("\np->num = %d,p->str=%s",p->num,p->str);

    ?

    ???//指針訪問結構體,第一種方式(*p.成員變量,第二種p->成員變量

    ?

    ???getchar();

    }

    ?

    結構體變量:

    簡單案例:

    結構體成員地址從低到高連續分配,首成員對應低地址。

    ?

    公用/聯合體(union:使用不同類型的變量共占用一段內存(相互覆蓋),次共用體大小為元素中最大字節變量。

    ?

    共用體成員索引:可以通過.成員變量符,也可以通過???à指針索引。????????

    ?????

    union案例

    ?

    枚舉變量:



    動態內存申請:
  • 在內存中申請的。

    malloc()返回的類型是:void *類型的

  • ??????2malloc之后要記著釋放,使用free函數。否則會造成內存泄露,導致其它程序不能再使用這塊兒內存了。

    操作系統在管理malloc的時候是一下這種方式:

    //?????|???? 地址????????|

    //?????|???? 大小????????|?????????

    調用malloc的時候,系統每次都會為malloc創建一個節點,并記錄本次malloc的首地址和malloc的大小。

    ?

    malloc內存里面申請出來的值是什么值?

    gcc這個編譯器下,malloc默認把申請的內存中的初始值變成0,但是在不同的編譯器下回有所不同。

    ?

    如果想將malloc中申請的內存的值變成0,可以使用memset(p,0x0,100);如果想使用這個函數,要加上頭文件<string.h>

    ?

    calloc()

    realloc:當內存不夠了時候,可以通過realloc繼續申請內存空間。

    realloc的實現策略:

  • malloc后面有足夠的存儲空間。這時候相當于把malloc的首地址不變,只是把malloc的大小改大些。

  • 如果malloc后面的存儲空間不夠,那么這時候realloc新開辟一個地址空間,然后將原來malloc的內存里的內存復制到新開辟的內存空間中。

  • 總結

    以上是生活随笔為你收集整理的typedef,结构体,共用体,联合体的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。