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

共用體的定義與應(yīng)用詳細(xì)解析

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

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

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

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

復(fù)制代碼 代碼如下:

union 共用體類(lèi)型名
{
    成員列表
};

定義共用體變量的一般形式為:
共用體類(lèi)型名   共用體變量名;
例如:
復(fù)制代碼 代碼如下:

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

或者
復(fù)制代碼 代碼如下:

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

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

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

例如:

復(fù)制代碼 代碼如下:

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

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

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

復(fù)制代碼 代碼如下:

#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;
}



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

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

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



要求設(shè)計(jì)程序輸入人員信息然后輸出。

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

復(fù)制代碼 代碼如下:

#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;//定義了一個(gè)共同體變量
    }person[2];//定義了一個(gè)結(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;
}


相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)文件內(nèi)容的加密與解密

    C語(yǔ)言實(shí)現(xiàn)文件內(nèi)容的加密與解密

    文件內(nèi)容需要加密與解密功能的原因主要有兩個(gè)方面:保護(hù)數(shù)據(jù)安全和確保數(shù)據(jù)完整性,所以接下來(lái)小編就給大家介紹一下如何通過(guò)C語(yǔ)言實(shí)現(xiàn)文件內(nèi)容加密與解密,需要的朋友可以參考下
    2023-08-08
  • C語(yǔ)言實(shí)現(xiàn)數(shù)字連連看

    C語(yǔ)言實(shí)現(xiàn)數(shù)字連連看

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)字連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++常用的11種設(shè)計(jì)模式解釋及示例代碼詳解

    C++常用的11種設(shè)計(jì)模式解釋及示例代碼詳解

    c++常用的設(shè)計(jì)模式包括單例模式、工廠模式、抽象工廠模式、適配器模式、裝飾者模式、代理模式、外觀模式、橋接模式、組合模式、享元模式、觀察者模式和命令模式等,這篇文章主要介紹了C++常用的11種設(shè)計(jì)模式解釋及示例,需要的朋友可以參考下
    2023-02-02
  • C++實(shí)現(xiàn)連連看消除算法

    C++實(shí)現(xiàn)連連看消除算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)連連看消除算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Qt項(xiàng)目打包的實(shí)現(xiàn)步驟

    Qt項(xiàng)目打包的實(shí)現(xiàn)步驟

    本文主要介紹了Qt項(xiàng)目打包的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 如何實(shí)現(xiàn)socket網(wǎng)絡(luò)編程的多線程

    如何實(shí)現(xiàn)socket網(wǎng)絡(luò)編程的多線程

    首先,學(xué)好計(jì)算機(jī)網(wǎng)絡(luò)知識(shí)真的很重要。雖然,學(xué)不好不會(huì)影響理解下面這個(gè)關(guān)于宏觀講解,但是,學(xué)好了可以自己打漁吃,學(xué)不好就只能知道眼前有魚(yú)吃卻打不到漁。在Java中網(wǎng)絡(luò)程序有2種協(xié)議:TCP和UDP,下面可以和小編一起學(xué)習(xí)下
    2019-05-05
  • 深入理解C++內(nèi)鏈接與外鏈接的意義

    深入理解C++內(nèi)鏈接與外鏈接的意義

    鏈接描述了名稱在整個(gè)程序或一個(gè)翻譯單元中如何引用或不引用同一實(shí)體,下面這篇文章主要給大家介紹了關(guān)于C++內(nèi)鏈接與外鏈接意義的理解,需要的朋友可以參考下
    2021-11-11
  • 一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享

    一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享

    這篇文章主要介紹了一波二叉樹(shù)遍歷問(wèn)題的C++解答實(shí)例分享,包括節(jié)點(diǎn)打印和轉(zhuǎn)換為鏡像等問(wèn)題的解答,需要的朋友可以參考下
    2016-02-02
  • C++從序列容器中刪除元素的四種方法

    C++從序列容器中刪除元素的四種方法

    刪除元素的方法在序列容器和關(guān)聯(lián)容器之間是非常不同的,在序列容器中,vector 和 string 是最常用的,但這里也會(huì)介紹 deque 和 list 以供全面了解,盡管在一般情況下可能不會(huì)使用它們,本文將詳細(xì)給大家介紹一下C++從序列容器中刪除元素的四種方法,需要的朋友可以參考下
    2025-03-03
  • C++實(shí)現(xiàn)單鏈表按k值重新排序的方法

    C++實(shí)現(xiàn)單鏈表按k值重新排序的方法

    這篇文章主要介紹了C++實(shí)現(xiàn)單鏈表按k值重新排序的方法,結(jié)合實(shí)例形式分析了C++單鏈表中按照給定值進(jìn)行判斷與排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

乌兰浩特市| 西宁市| 阿克苏市| 黑龙江省| 湾仔区| 镇沅| 都安| 民勤县| 海丰县| 独山县| 名山县| 祥云县| 敖汉旗| 胶州市| 兴业县| 华阴市| 沙坪坝区| 包头市| 海城市| 丹棱县| 山阴县| 六安市| 东平县| 和龙市| 两当县| 婺源县| 临泽县| 揭阳市| 小金县| 离岛区| 五华县| 宁波市| 项城市| 馆陶县| 北辰区| 刚察县| 利辛县| 三原县| 贞丰县| 建始县| 石嘴山市|