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

C++共用體的定義與應用總結

 更新時間:2013年10月16日 09:23:03   投稿:jingxian  
共同體的定義類似結構體,不過共同體的所有成員都在同一段內存中存放,起始地址一樣,并且同一時刻只能使用其中的一個成員變量

定義:
使用覆蓋技術,幾個變量相互覆蓋,從而使幾個不同變量共占同一段內存的結構,成為共同體類型的結構。

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

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

復制代碼 代碼如下:

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

定義共用體變量的一般形式為:

共用體類型名   共用體變量名;

例如:

復制代碼 代碼如下:

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

或者
復制代碼 代碼如下:

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

結構體變量所占長度是各成員占的內存長度之和。每個成員分別占有自己的內存單元。共用體變量所占的內存長度等于最長的成員的長度。

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

例如:

復制代碼 代碼如下:

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

2.使用共用體變量的目的是希望通過統(tǒng)一內存段存放幾種不同類型的數(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進行了賦值,結果我們輸出的是成員a,輸出的是b的值,所以證明它們是公用地址的。

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

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

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

如果把每個人都看作一個結構體變量的話,可以看出老師和學生的前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];//定義了一個結構體數(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++ 回調接口設計和二進制兼容詳細

    C++ 回調接口設計和二進制兼容詳細

    再開發(fā)視頻編輯 SDK,SDK的回調接口設計成 C 風格,結構中放著一些函數(shù)指針,既然對外接口是 C++,為什么不直接使用 C++ 的虛函數(shù)?這篇文章便對這一問題做個詳細介紹,需要的朋友可以參考一下
    2021-09-09
  • C++實現(xiàn)打印1到最大的n位數(shù)

    C++實現(xiàn)打印1到最大的n位數(shù)

    這篇文章主要介紹了C++實現(xiàn)打印1到最大的n位數(shù),并分析了實現(xiàn)代碼中語句的跳轉技巧,需要的朋友可以參考下
    2014-09-09
  • C++ lambda函數(shù)詳解

    C++ lambda函數(shù)詳解

    小編可以明確告訴大家:lambda函數(shù)是C++11中最重要的,使用最廣泛的,最具現(xiàn)代風格的內容,lambda函數(shù)的出現(xiàn)改變了C++編程的思維方式。所以快和小編學習一下C++11中l(wèi)ambda函數(shù)的使用吧
    2023-02-02
  • C語言深入講解內存操作問題

    C語言深入講解內存操作問題

    程序運行的目的是為了得到特定的結果,計算機本質上是用于計算的,既然是用于計算,就需要參與計算的數(shù)據(jù),那這些數(shù)據(jù)就存儲在內存中,計算之前參與運算的數(shù)據(jù)以及運算之后得到的數(shù)據(jù),都存儲在內存中,所以對內存操作的掌握就尤為重要,下面我們一起來看看
    2022-04-04
  • Qt5.14.2使用虛擬鍵盤的關鍵代碼

    Qt5.14.2使用虛擬鍵盤的關鍵代碼

    對于Qwidget程序,使用qtvirtualkeyboard彈出鍵盤之后,鍵盤會浮于表面。使用VirtualkeyboardPushView模塊,自動根據(jù)情況把輸入視圖往上面推移,這篇文章主要介紹了Qt5.14.2使用虛擬鍵盤的關鍵代碼,需要的朋友可以參考下
    2022-09-09
  • C語言玩轉指針之指針的高階玩法

    C語言玩轉指針之指針的高階玩法

    指針可以表示一個變更的地址,在計算機程序中,通常表示內存地址,存儲數(shù)據(jù)的地址,下面這篇文章主要給大家介紹了關于C語言玩轉指針之指針的高階玩法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-10-10
  • 學習 C++能帶給我們什么

    學習 C++能帶給我們什么

    這篇文章主要介紹了學習 C++能帶給我們什么的相關總結,主要來自于前輩們,這里匯總給大家,需要的朋友可以參考下
    2016-03-03
  • C/C++使用fmt庫實現(xiàn)格式化字符串

    C/C++使用fmt庫實現(xiàn)格式化字符串

    fmt庫是一個高效、易用的C++格式化庫,可以幫助我們方便地進行字符串格式化、輸出、日志記錄等操作,下面我們就來學習一下fmt格式化字符串的具體操作吧
    2023-12-12
  • 詳解C語言 三大循環(huán) 四大跳轉 和判斷語句

    詳解C語言 三大循環(huán) 四大跳轉 和判斷語句

    這篇文章主要介紹了詳解C語言 三大循環(huán) 四大跳轉 和判斷語句的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 基于C語言實現(xiàn)簡單的掃雷游戲

    基于C語言實現(xiàn)簡單的掃雷游戲

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經典游戲,本文將利用C語言實現(xiàn)這一經典的游戲,文中的示例代碼講解詳細,感興趣的可以學習一下
    2022-05-05

最新評論

谢通门县| 冀州市| 中阳县| 甘德县| 康定县| 剑河县| 成安县| 尉犁县| 新河县| 深水埗区| 涞水县| 华亭县| 巴林右旗| 新平| 绥阳县| 福泉市| 修武县| 巴东县| 吉首市| 鄄城县| 湛江市| 花垣县| 满洲里市| 措美县| 岱山县| 大厂| 清丰县| 屯门区| 武夷山市| 普洱| 喜德县| 沭阳县| 萨嘎县| 宁安市| 迭部县| 亚东县| 棋牌| 崇州市| 呼玛县| 宁津县| 黄山市|