C語言項目-精忠報國-第一天-union關鍵字總結

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-inehfiQc-1584246523757)(:/c0a992273939428ea0848d86e15b6ecf)]

這個項目基本以看源碼爲主,主要是給自己的c語言結個尾,之後有兩個github的項目重點去練習,因爲不是自己沒寫,就不放源碼了,需要的可以私信或者評論,我私發.

項目來源:老九君

項目名稱:精忠報國之笑傲江湖

視頻課地址:網易雲課堂

基本功能/架構:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存6546854)(:/c0a992273939428ea0848d8,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XyqA8td9-1584246546856)(:/051047e905ff4bd5b8a36b7df246546857)(:/e504be615a334d4684555326bb5608)(unio/051047e905ff4bd5b8a36b7df7d65230)]


第一天

看了一下這個遊戲的主要結構和函數定義

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-0Te3Xb73-1584246523762)(:/e504be615a334d4684555326bb553a18)]

目錄:
1.union關鍵字


1.union關鍵字

代碼如下

/* 遊戲道具 */
typedef struct _prop{
    int id;
    char name[50];
    int level;
    PropType type;
    int stock;          //當前道具的數量
    union{
        int attack;     //如果是武器,就對應攻擊力
        int defense;    //如果是防具,就對應防禦力
        int power;      //如果是血瓶等消耗品,對應增加的能量值
    };

    double price;
    char desc[200];     //遊戲道具描述
  • 簡單來說,union是一種特殊的數據類型,主要作用是在相同的內存位置存放"多個"數據"成員中的"一個".
  • 但任何時候只能有一個成員帶值(因爲使用的是相同的內存位置),否則會進行覆蓋(下面講訪問時會有實例),覆蓋時從union首地址開始
  • 定義方式與struct類似,標籤和變量均爲可選
	union tag
	{
	   member definition;
	   member definition;
	   ...
	   member definition;
	} variables;
  • union佔用的內存大小由最大的成員大小決定,如下union將佔用20個字節的內存空間
	union Data
	{
	   int i;
	   float f;
	   char  str[20];
	} data;
  • 使用成員訪問運算符(.)來訪問union成員,data是上面定義,輸出結果中由於int和float都被str覆蓋了,所以只有str正常輸出
   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");
 
   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);
   
   //輸出結果
   data.i : 1917853763
   data.f : 4122360580327794860452759994368.000000
   data.str : C Programming
參考:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章