1. 程式人生 > 程式設計 >C語言列舉(enum)和聯合(union)例項分享

C語言列舉(enum)和聯合(union)例項分享

使用enum進行定義

/*
列舉型別演示
*/
#include <stdio.h>
int main() {
  enum /*季節*/ {CHUN,XIA = 5,QIU,DONG}; 
  printf("QIU是%d\n",QIU); 
}

使用union聯合進行定義

/*
聯合演示
*/
#include <stdio.h>
typedef union{
  int val; 
  float fval1; 
} tmp; 
int main(){
  tmp utmp = {0}; 
  printf("&(utmp.val)是%p\n",&(utmp.val)); //所指向的地址是相同的
  printf("&(utmp.fval)是%p\n",&(utmp.fval1)); 
}

知識點擴充套件:

列舉型別的定義形式為:

enum typeName{ valueName1,valueName2,valueName3,...... };

enum是一個新的關鍵字,專門用來定義列舉型別,這也是它在C語言中的唯一用途;typeName是列舉型別的名字;

valueName1,......是每個值對應的名字的列表。注意最後的;不能少。

例如,列出一個星期有幾天:

enum week{ Mon,Tues,Wed,Thurs,Fri,Sat,Sun };

可以看到,我們僅僅給出了名字,卻沒有給出名字對應的值,這是因為列舉值預設從 0 開始,往後逐個加 1(遞增);也就是說,week 中的 Mon、Tues ...... Sun 對應的值分別為 0、1 ...... 6。

我們也可以給每個名字都指定一個值:

enum week{ Mon = 1,Tues = 2,Wed = 3,Thurs = 4,Fri = 5,Sat = 6,Sun = 7 };

更為簡單的方法是隻給第一個名字指定值:

enum week{ Mon = 1,Sun };

這樣列舉值就從 1 開始遞增,跟上面的寫法是等效的。

列舉是一種型別,通過它可以定義列舉變數:

enum week a,b,c;

也可以在定義列舉型別的同時定義變數:

enum week{ Mon = 1,Sun } a,c;

有了列舉變數,就可以把列表中的值賦給它:

enum week{ Mon = 1,Sun };

enum week a = Mon,b = Wed,c = Sat;

或者:

enum week{ Mon = 1,Sun } a = Mon,c = Sat;

到此這篇關於C語言列舉(enum)和聯合(union)例項分享的文章就介紹到這了,更多相關C語言列舉(enum)和聯合(union)內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!