欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

共用體的定義與應用詳細解析

 更新時間:2013年08月31日 11:09:54   作者:  
共同體的定義類似結(jié)構(gòu)體,不過共同體的所有成員都在同一段內(nèi)存中存放,起始地址一樣,并且同一時刻只能使用其中的一個成員變量

定義:
使用覆蓋技術,幾個變量相互覆蓋,從而使幾個不同變量共占同一段內(nèi)存的結(jié)構(gòu),成為共同體類型的結(jié)構(gòu)。

共同體的定義類似結(jié)構(gòu)體,不過共同體的所有成員都在同一段內(nèi)存中存放,起始地址一樣,并且同一時刻只能使用其中的一個成員變量。

聲明共用體的一般形式為:

復制代碼 代碼如下:

union 共用體類型名
{
    成員列表
};

定義共用體變量的一般形式為:
共用體類型名   共用體變量名;
例如:
復制代碼 代碼如下:

union data{
int        i;
char   ch;
double d;
};
data a,b,c;

或者
復制代碼 代碼如下:

union{
int        i;
char   ch;
double d;
};
data a,b,c;

結(jié)構(gòu)體變量所占長度是各成員占的內(nèi)存長度之和。每個成員分別占有自己的內(nèi)存單元。共用體變量所占的內(nèi)存長度等于最長的成員的長度。

共用體的使用
1.不能應用共用體變量,而只能引用共用體變量中的成員。

例如:

復制代碼 代碼如下:

cout<<a.i;
cout<<a.ch;

2.使用共用體變量的目的是希望通過統(tǒng)一內(nèi)存段存放幾種不同類型的數(shù)據(jù)。

但是要注意,每一瞬間只能存放一種,而不是存放集中。并且,如果對新的成員變量的話,原來的成員變量的值就被覆蓋了。

復制代碼 代碼如下:

#include<iostream>
using namespace std;
int main(){
   union data{
    char a;
    char b;
   };
   data qianshou;
   qianshou.a='q';
   cout<<qianshou.a<<endl;
   qianshou.b='m';
   cout<<qianshou.a<<endl;
   return 0;
}



后來,我們對共用體中的成員b進行了賦值,結(jié)果我們輸出的是成員a,輸出的是b的值,所以證明它們是公用地址的。

3.不能對共用體變量名賦值,不能企圖引用變量名來得到一個值;不能在定義共用體變量時對它初始化,不能用共用體變量名作為函數(shù)參數(shù)。

一個共同體的實例:
設有若干個人員的數(shù)據(jù),其中有學生和老師。學生的數(shù)據(jù)包括:姓名,編號,性別,職業(yè),年級。老師的數(shù)據(jù)包括:姓名,編號,性別,職業(yè),職務??梢钥闯?,學生和老師所包含的數(shù)據(jù)是不同的。先要求把他們放在同一個表格中:



要求設計程序輸入人員信息然后輸出。

如果把每個人都看作一個結(jié)構(gòu)體變量的話,可以看出老師和學生的前4個成員變量是一樣的,并且第五個成員變量可能是class或者position,當?shù)谒膫€成員變量是s的時候,第五個成員變量就是class;當?shù)谒膫€成員變量是t的時候,第五個成員變量就是position。

復制代碼 代碼如下:

#include<iostream>
#include<string>
using namespace std;
int main(){
   struct{
      string name;
      string num;
      char   sex;
      char   job;
      union{
       char grade[5];
       char position[5];
      }p;//定義了一個共同體變量
    }person[2];//定義了一個結(jié)構(gòu)體數(shù)組變量
   int i=0;
   cout<<"name\tnum\tsex\tjob\tclass/position"<<endl;
   for(;i<2;i++){
 cin>>person[i].name>>person[i].num>>person[i].sex>>person[i].job;
 if(person[i].job=='s')cin>>person[i].p.grade;
 else cin>>person[i].p.position;   
   }
   i=0;
   cout<<"===========show data==========="<<endl;
   for(;i<2;i++){
    cout<<person[i].name<<"\t";
    cout<<person[i].num<<"\t";
    cout<<person[i].sex<<"\t";
    cout<<person[i].job<<"\t";
    if(person[i].job=='s')cout<<person[i].p.grade<<endl;
 else cout<<person[i].p.position<<endl;            
   }
   cout<<endl;
   return 0;
}


您可能感興趣的文章:

相關文章

  • C++ 網(wǎng)絡編程 總結(jié)

    C++ 網(wǎng)絡編程 總結(jié)

    這篇文章主要介紹了C++ 網(wǎng)絡編程的一些詳細相關內(nèi)容,有需要的小伙伴可以參考下。
    2015-06-06
  • Qt圖片繪圖類之QPixmap/QImage/QPicture詳解

    Qt圖片繪圖類之QPixmap/QImage/QPicture詳解

    這篇文章主要為大家詳細介紹了Qt圖片繪圖類中QPixmap、QImage和QPicture的使用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • C++中的vector中erase用法實例代碼

    C++中的vector中erase用法實例代碼

    在vector數(shù)組中我們刪除數(shù)組經(jīng)常用的就是erase方法,但是earse的用法一不注意就會出錯,今天我就遇到了,所以在這里總結(jié)一下,避免大家用錯,對vector中erase用法感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • C++如何將十六進制字符串轉(zhuǎn)換為二進制字符串

    C++如何將十六進制字符串轉(zhuǎn)換為二進制字符串

    這篇文章主要介紹了C++如何將十六進制字符串轉(zhuǎn)換為二進制字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Matlab實現(xiàn)數(shù)據(jù)的動態(tài)顯示方法

    Matlab實現(xiàn)數(shù)據(jù)的動態(tài)顯示方法

    這篇文章主要為大家詳細介紹了Matlab使用Plot函數(shù)實現(xiàn)數(shù)據(jù)動態(tài)顯示方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C++俄羅斯方塊游戲 無需圖形庫的俄羅斯方塊

    C++俄羅斯方塊游戲 無需圖形庫的俄羅斯方塊

    這篇文章主要為大家詳細介紹了無需圖形庫的C++俄羅斯方塊游戲,重溫經(jīng)典游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • C++ LibCurl實現(xiàn)Web指紋識別功能

    C++ LibCurl實現(xiàn)Web指紋識別功能

    Web指紋識別是一種通過分析Web應用程序的特征和元數(shù)據(jù),以確定應用程序所使用的技術棧和配置的技術,本文將通過C++中LibCurl庫實現(xiàn)簡單是指紋識別功能,感興趣的可以了解下
    2023-11-11
  • C++語言實現(xiàn)線性表之數(shù)組實例

    C++語言實現(xiàn)線性表之數(shù)組實例

    這篇文章主要介紹了C++語言實現(xiàn)線性表之數(shù)組,實例分析了C++實現(xiàn)數(shù)組形式線性表的原理與方法,需要的朋友可以參考下
    2015-04-04
  • C語言中pthread_exit和pehread_join的使用

    C語言中pthread_exit和pehread_join的使用

    pthread_exit用于強制退出一個線程,pthread_join用于阻塞等待線程退出,獲取線程退出狀態(tài),本文主要介紹了C語言中pthread_exit和pehread_join函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • C語言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹實例詳解

    C語言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹實例詳解

    這篇文章主要介紹了C語言 數(shù)據(jù)結(jié)構(gòu)平衡二叉樹實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論