日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,结构体,共用体,联合体的全部內容,希望文章能夠幫你解決所遇到的問題。

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