程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言學習015:聯合(union)與枚舉(enum),015enum

C語言學習015:聯合(union)與枚舉(enum),015enum

編輯:關於C語言

C語言學習015:聯合(union)與枚舉(enum),015enum


聯合

  聯合和結構的區別是,結構會為每個字段申請一片內存空間,而聯合只是申請了一片內存空間然後所有字段都會保存到這片空間中,這片空間的大小由字段中最長的決定,下面我們就開始定義一個聯合

1 //聯合的定義
2 typedef union{
3     short count;
4     float weight;
5     float volume;
6 } quantity;

  聯合的使用 我們可以通過很多的方式為聯合賦值

 1 typedef struct{
 2     const char* color;
 3     quantity amount;
 4 }bike;
 5 
 6 int main(){
 7     //用聯合表示自行車的數量
 8      bike b={"red",5};
 9      printf("bike color:%s count:%i\n",b.color,b.amount.count);
10      //用聯合表示自行車的重量
11      bike b2={"red",.amount.weight=10.5};
12      printf("bike color:%s count:%f\n",b2.color,b2.amount.weight);
13     return 0;
14 }

  但是在讀取聯合的值的時候會很容易出問題,比如我們保存了一個float類型的字段,但通過short字段讀取,得到了與預期毫不相干的值

枚舉

  為了避免像聯合哪樣把字段的數據類型搞混亂,我們可以使用枚舉

 1 #include <stdio.h>
 2 
 3 //枚舉的定義和結構類
 4 typedef enum colors{RED,BLACK,BLUE,GREEN} colors;
 5 
 6 int main(){
 7     colors favorite=BLUE;
 8     printf("%i",favorite);
 9     return 0;
10 }

  如果想要保存多種數據類型l聯合畢枚舉更適用,那麼要保存多條數據的話枚舉比聯合更適合

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved