精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

C語言-枚舉、共用體

DS小龍哥-嵌入式技術 ? 來源: DS小龍哥-嵌入式技術 ? 作者: DS小龍哥-嵌入式技 ? 2022-09-09 11:31 ? 次閱讀

1. 共用體

前面章節學習了結構體,結構體里可以按順序存放相同或者不同的數據類型,每個成員都有它對應的存儲空間。
而共用體和結構體一樣也可以按順序存放相同或者不同數據類型,但是與結構體的區別是,共用體所有成員共用一個存儲空間,存儲空間由成員中存儲空間最大的來決定。

定義共用體的關鍵字: union

下面通過結構體、共同體兩個定義代碼對比區別。

結構體定義示例:

struct app
{
    int a;
    char b;
};

結構體:每個成員是占用獨立的空間,結構體成員之間會因為內存對齊產生間隙。

共用體定義示例:

union app
{
    int a;
    int b;
    char c;
};

**共用體:**也稱為聯合體,采用內存覆蓋技術,每個成員共用一個內存空間,開空間是以最大的成員開空間。 在單片機嵌入式設備里使用較多。共用體的語法和使用方法(定義、成員變量的訪問形式等等)與結構體一樣。

共同體案例代碼:

#include 
#include 

union app
{
    int a;
    int b;
    char c;
};

//匿名方式定義,只能在定義共用體的時候就定義變量
union
{
    int a;
    int b;
    char c;
}a1,a2,a3;  //定義3個變量

union app2
{
    int a;
    int b;
    char c;
}b1,b2;

typedef union app3
{
    int a;
    int b;
    char c;
}c1;  //c1是新的數據類型--union app3的別名

int main()
{
    b1.a=65;
    b1.b=66;
    printf("%d\n",b1.a); //66
    printf("%d\n",b1.b); //66
    printf("%c\n",b1.c); //66 
    return 0;
}

2. 枚舉

C語言的枚舉可以給一串有序的數字集合定義名字,特別是數量較多的整數需要定義名字時,比#define更加方便。特別是定義函數的返回值類型,特別方便,項目開發中,一般標準的函數返回值都有很多種情況,為了方便調用者判斷錯誤類型,可以把這些錯誤值全部使用枚舉定義,這樣調用者就能清楚知道每個數值代表的含義。

枚舉的定義語法:

enum枚舉名{枚舉元素1,枚舉元素2,……};

默認成員都是從0開始,如果某一個成員被賦了值,則該成員以后的元素都以此為基礎遞增。

枚舉的定義及用法示例:

#include 
#include 

#define DEF_VAL 100

//枚舉類型
/*
枚舉內部的是常量標識符,這些常量標識符就相當于全局變量(聲明放在函數之外)
枚舉常量只能整型。
默認情況下枚舉值是從0開始的,依次遞增。
*/
enum app
{
   a1='A',a2,a3,a4
};

typedef enum app2
{
   b1='A',b2,b3,b4
}type_app2;

//枚舉在程序開發中最常用的地方是:表示函數執行的狀態值。

int main()
{
    printf("%d\n",a1);
    printf("%d\n",a2);
    printf("%d\n",a3);
    printf("%d\n",a4);
    return 0;
}

type_app2 func1()
{
    
    return b2;
}

enum app2 func2()
{
    return b3;
}

枚舉應用案例2:

#include 
#include 

//枚舉類型
/*
枚舉內部的是常量標識符,這些常量標識符就相當于全局變量(聲明放在函數之外)
枚舉常量只能整型。
默認情況下枚舉值是從0開始的,依次遞增。
*/
enum app
{
   a1=0,   //表示OK
   a2,   //第一次空間申請失敗
   a3,   //表示第二次空間申請失敗
   a4,
   a5,
   a6
};

//枚舉在程序開發中最常用的地方是:表示函數執行的狀態值。
enum app func();
int main()
{
    printf("%d\n",func());
    return 0;
}

enum app func()
{
    int *p1=NULL;
    int *p2=NULL;
    p1=malloc(4);
    if(p1==NULL)
    {
        return a2; //1
    }

    p2=malloc(4);
    if(p2==NULL)
    {
        return a3;//2
    }
    return a1; //0
}

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

    關注

    5068

    文章

    19019

    瀏覽量

    303292
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136199
收藏 人收藏

    評論

    相關推薦

    C語言枚舉精講分析

    ? ? ?在使用帶有數字性質的名稱時有的時候需要用到枚舉的方式進行定義函數名字,按照對應的數字格式來對應相應的名稱。枚舉成員的值是常量不是變量。 ? ? ?我們首先講解一下枚舉與結構
    的頭像 發表于 03-02 10:58 ?3888次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中<b class='flag-5'>枚舉</b>精講分析

    C語言枚舉的基本概念和常見用法

    C語言中,枚舉是一種方便組織和表示一組相關常量的工具。枚舉類型有助于提高代碼的可讀性和可維護性。本文將介紹C
    發表于 08-17 15:32 ?1385次閱讀

    C語言必備知識共用

    共用是一種 構造數據類型 ,有時候也稱之為聯合體。它的用途:使幾個不同類型的變量共占一段內存。
    的頭像 發表于 11-29 16:04 ?984次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>必備知識<b class='flag-5'>共用</b><b class='flag-5'>體</b>

    C語言必備知識枚舉

    枚舉類型是ANSI C新標準所增加的。如果一個變量只有幾種可能的值,可以定義為枚舉類型。所謂“枚舉是指將變量的值一一列舉出來,變量的值只限于列舉出來的值的范圍內。
    的頭像 發表于 11-29 16:07 ?730次閱讀

    什么是C語言共用

    ;volatile unsigned char G: 1;volatile unsigned char DP: 1; } B; volatile unsigned char W;} ;這是個什么共用?怎么稱呼的?這是共用
    發表于 10-25 02:32

    結構共用的區別

    轉載重點:共用的所有成員占用同一段內存,修改一個成員會影響其余所有成員。圖形分析影響過程通過前面的講解,我們知道結構(Struct)是一種構造類型或復雜類型,它可以包含多個類型不同的成員。在
    發表于 07-20 06:57

    C語言的結構共用在單片機中的妙用是什么

    【分享】C語言的結構共用在單片機中的妙用C語言
    發表于 11-30 06:13

    怎樣去使用C語言的結構共用

    C語言的結構共用分別有何特點呢?怎樣去使用C語言
    發表于 01-17 07:51

    C語言程序設計教程之結構共用的詳細資料說明

    本文檔詳細介紹的是C語言程序設計教程之結構共用的詳細資料說明主要內容包括了:1 結構,2
    發表于 03-01 17:20 ?11次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>程序設計教程之結構<b class='flag-5'>體</b>與<b class='flag-5'>共用</b><b class='flag-5'>體</b>的詳細資料說明

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細講解。 枚舉
    的頭像 發表于 09-02 09:43 ?5147次閱讀

    C語言的結構共用在單片機中的妙用

    【分享】C語言的結構共用在單片機中的妙用C語言
    發表于 11-20 19:36 ?20次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的結構<b class='flag-5'>體</b>和<b class='flag-5'>共用</b><b class='flag-5'>體</b>在單片機中的妙用

    什么是C語言共用類型

    結構變量所占內存長度是各成員占的內存長度之和。每個成員分別占有其自己的內存單元。而共用變量所占的內存長度等于最長的成員的長度。
    的頭像 發表于 03-24 15:13 ?728次閱讀

    C語言枚舉簡述

    C語言中,如果一個變量只有幾種可能的值,則可以定義為枚舉類型,所謂“枚舉”就是指把可能的值一一列舉出來,變量的值只限于列舉出來的值的范圍內。
    的頭像 發表于 03-24 15:15 ?757次閱讀

    詳解C/C++結構、聯合體和枚舉的區別與內存對齊

    C語言中構造類型一共有4種,它們分別是數組、結構(struct)、共用(union)、枚舉
    的頭像 發表于 06-08 14:38 ?4375次閱讀
    詳解<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++結構<b class='flag-5'>體</b>、聯合體和<b class='flag-5'>枚舉</b>的區別與內存對齊

    枚舉有多大?c語言枚舉end的作用是什么?

    枚舉有多大?c語言枚舉end的作用是什么? 枚舉C語言
    的頭像 發表于 01-19 14:19 ?566次閱讀