最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言中共用體和枚舉的實(shí)現(xiàn)

 更新時(shí)間:2025年12月18日 10:27:13   作者:VekiSon  
本文主要介紹了C語言中共用體和枚舉的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、共用體(聯(lián)合體)

1.共用體的定義與聲明

  • 共用體的定義
union 類型名
{
    數(shù)據(jù)類型 成員變量1;
    數(shù)據(jù)類型 成員變量2;
    數(shù)據(jù)類型 成員變量3;
    數(shù)據(jù)類型 成員變量4;
    ...
}
  • 共用體的聲明

和結(jié)構(gòu)體一樣,共用體變量聲明有 3 種常見形式:

// 方式1:定義后單獨(dú)聲明
union Data 
{
    int i;
    char c;
    float f;
};
union Data a, b;

// 方式2:定義時(shí)聲明變量
union Data2 
{
    int x;
    double y;
} c, d;

// 方式3:匿名共用體(僅使用一次,無名稱)
union 
{
    char ch;
    short s;
} e;

2.共用體的特征

  • 共用體每個(gè)成員變量的內(nèi)存空間都是共享的
  • 共用體也會(huì)用于函數(shù)參數(shù)的傳遞
  • 共用體的大小,是最大成員變量的大小

3.共用體的應(yīng)用

1.大小端判斷

#include <stdio.h>

union DATA
{
    int a;
    char c;
};

int main()
{
    union DATA data;
    data.a = 0x12345678;
    if(0x78 == data.c)
    {
        printf("little end\n");
    }
    else
    {
        printf("big end\n");
    }
    return 0;                                                                 
}

2.作為函數(shù)的參數(shù)傳遞的時(shí)候的不同選項(xiàng)(EPOLL)

4.共用體與結(jié)構(gòu)體的區(qū)別

特性共用體(Union)結(jié)構(gòu)體(Struct)
內(nèi)存分配所有成員共享同一塊內(nèi)存成員各自占用獨(dú)立內(nèi)存,總大小 = 各成員大小之和(含對(duì)齊)
成員訪問同一時(shí)間只能有效訪問一個(gè)成員可同時(shí)訪問所有成員
大小計(jì)算總大小 = 最大成員的大小(含對(duì)齊)總大小 = 各成員大小之和(含對(duì)齊)
用途節(jié)省內(nèi)存、類型轉(zhuǎn)換組合不同類型數(shù)據(jù),描述復(fù)雜對(duì)象

二、枚舉

1.枚舉的定義與聲明

枚舉:約定變量的取值范圍。比如月份、周幾。

//枚舉值當(dāng)常量值看,類型為整形(int)
enum 類型名 {枚舉值1,枚舉值2, 枚舉值3,枚舉值4 ,枚舉值5, 枚舉值6, ... };

//MON如果沒有指定值,那么它的值就是0,后面枚舉值就在一個(gè)的值的基礎(chǔ)上+1
enum WEEK {MON, TUE, WED, THU, FRI, SAT, SUN};

//當(dāng)然也可一給每個(gè)枚舉值賦新值進(jìn)去
enum WEEK {MON,TUE=3,WED=4,THU=5,FRI=6,SAT,SUN};

關(guān)鍵規(guī)則:

  • 枚舉常量的值必須是整數(shù)(不能是浮點(diǎn)數(shù)、字符串)。
  • 允許不同枚舉常量賦值相同(但不推薦,失去唯一性)。
  • 未顯式賦值的成員,值為 “前一個(gè)成員的值 + 1”。

2.枚舉的應(yīng)用

  • 和 switch 搭配使用
  • 提高代碼的可閱讀性

代碼示例:

#include <stdio.h>

enum WEEK {MON, TUE, WED, THU, FRI, SAT, SUN};

typedef enum
{
	JAN,
	FEB,
	MARCH,
	APRI,
	MAY,
	JU,
	JULY,
}MONTH;

int main()
{
	enum WEEK week;
	MONTH mon = MAY;

	int num = 0;
	printf("input num (0~6):");
	scanf("%d", &num);
	week = num;

	switch(week)
	{
		case MON:
			printf("go to school\n");
			break;
		case TUE:
			printf("go to swim\n");
			break;
		case WED:
			printf("go to read\n");
			break;
		case THU:
			printf("go to study\n");
			break;
		case FRI:
			printf("go to pao dao\n");
			break;
		case SAT:
			printf("go to da wa\n");
			break;
		case SUN:
			printf("go to sleep\n");
			break;
		default:
			printf("I don't know\n");
	}
}

到此這篇關(guān)于C語言中共用體和枚舉的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C語言 共用體和枚舉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解C++程序中定義struct結(jié)構(gòu)體的方法

    詳解C++程序中定義struct結(jié)構(gòu)體的方法

    C++中同樣擁有C語言中的結(jié)構(gòu)體,下面就來詳解C++程序中定義struct結(jié)構(gòu)體的方法,需要的朋友可以參考下
    2016-05-05
  • C++中String增刪查改模擬實(shí)現(xiàn)方法舉例

    C++中String增刪查改模擬實(shí)現(xiàn)方法舉例

    這篇文章主要給大家介紹了關(guān)于C++中String增刪查改模擬實(shí)現(xiàn)方法的相關(guān)資料,String是C++中的重要類型,程序員在C++面試中經(jīng)常會(huì)遇到關(guān)于String的細(xì)節(jié)問題,甚至要求當(dāng)場(chǎng)實(shí)現(xiàn)這個(gè)類,需要的朋友可以參考下
    2023-11-11
  • C/C++高精度算法的實(shí)現(xiàn)

    C/C++高精度算法的實(shí)現(xiàn)

    這篇文章主要介紹了C/C++高精度算法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • C++ explicit關(guān)鍵字的應(yīng)用方法詳細(xì)講解

    C++ explicit關(guān)鍵字的應(yīng)用方法詳細(xì)講解

    C++ explicit關(guān)鍵字用來修飾類的構(gòu)造函數(shù),表明該構(gòu)造函數(shù)是顯式的,既然有"顯式"那么必然就有"隱式",那么什么是顯示而什么又是隱式的呢?下面就讓我們一起來看看這方面的知識(shí)吧
    2013-09-09
  • C語言實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室

    C語言實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)易網(wǎng)絡(luò)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C++歸并排序算法實(shí)例

    C++歸并排序算法實(shí)例

    這篇文章主要介紹了C++歸并排序算法實(shí)例,本文先是介紹了什么是歸并排序,然后給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-10-10
  • C語言中枚舉與聯(lián)合體的使用方法(enum union)

    C語言中枚舉與聯(lián)合體的使用方法(enum union)

    枚舉的意思就是列舉,將每一個(gè)可能的取值都進(jìn)行一一列舉,下面這篇文章主要給大家介紹了關(guān)于C語言中枚舉與聯(lián)合體的使用方法,需要的朋友可以參考下
    2021-09-09
  • C++使用郵件槽實(shí)現(xiàn)ShellCode跨進(jìn)程傳輸

    C++使用郵件槽實(shí)現(xiàn)ShellCode跨進(jìn)程傳輸

    在計(jì)算機(jī)安全領(lǐng)域,進(jìn)程間通信(IPC)一直是一個(gè)備受關(guān)注的話題,在本文中,我們將探討如何使用Windows郵件槽(Mailslot)實(shí)現(xiàn)ShellCode的跨進(jìn)程傳輸,需要的可以參考下
    2023-12-12
  • C++多繼承同名隱藏實(shí)例詳細(xì)介紹

    C++多繼承同名隱藏實(shí)例詳細(xì)介紹

    多繼承可以看作是單繼承的擴(kuò)展。所謂多繼承是指派生類具有多個(gè)基類,派生類..本文將對(duì)C++多繼承同名隱藏實(shí)例進(jìn)行分析
    2012-11-11
  • 利用C++11原子量如何實(shí)現(xiàn)自旋鎖詳解

    利用C++11原子量如何實(shí)現(xiàn)自旋鎖詳解

    當(dāng)自旋鎖嘗試獲取鎖時(shí)以忙等待(busy waiting)的形式不斷地循環(huán)檢查鎖是否可用,下面這篇文章主要給大家介紹了關(guān)于利用C++11原子量如何實(shí)現(xiàn)自旋鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06

最新評(píng)論

赣榆县| 玉林市| 江门市| 海盐县| 呼玛县| 金乡县| 米泉市| 奉化市| 宁波市| 渝北区| 遂平县| 兴城市| 和林格尔县| 新津县| 五常市| 靖州| 东平县| 武夷山市| 肃宁县| 西盟| 诸城市| 田阳县| 安远县| 昭平县| 汽车| 东乌珠穆沁旗| 固阳县| 彩票| 徐汇区| 鹿邑县| 财经| 镇江市| 温宿县| 城口县| 山阴县| 马公市| 潮州市| 萍乡市| 廊坊市| 泸水县| 惠州市|