1. 程式人生 > >C++結構體和共用體

C++結構體和共用體

例如 union one4all {

      int int_val;

      long long_val;

      double double_val;

};

可以使用one4all變數來儲存int、long 或double,條件是在不同的時間進行。

定義一個共用體變數,one4all pail;

pail使用成員操作符訪問其中變數時只有一個成員是當前成員,即one4all中的三個變數共享一個地址,當pail訪問int_val時,記憶體中儲存的就是int型。

共用體的用途之一就是,當資料使用兩種或更多種格式(但不會同時使用)時,可以節省空間。

一個結構體和共用體結合的程式碼:

#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];//定義了一個結構體陣列變數
   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++中結構共用的區別

ont 基本類型 erl list 變量名 ext 使用結構體 oot 數據格式 在c++中,結構體(struct)和共用體(union)是兩種很相似的復合數據類型,都可以用來存儲多種數據類型,但是兩者還有很大的區別。 結構體(struct) 結構是用戶自定

11、C語言之結構共用

結構體數組 結構體 float add font sco 規則 student mon 一、結構體   結構體:是一種自定義的構造數據類型   用途:把不同類型的數據組合成一個整體。     結構體類型定義:     struct [結構體名]    {       類型識

C 語言中的結構共用(聯合體)

本文主要總結了譚浩強主編的《C 程式設計》教材中結構體和共用體相關章節的內容。 在 C 語言中, 結構體(struct) 是一個或多個變數的集合,這些變數可能為不同的型別,為了處理的方便而將這些變數組織在一個名字之下。由於結構體將一組相關變數看作一個單元而不是各自獨立的實體,因此結構體有助於組織複雜的資料,

C++結構共用

例如 union one4all {       int int_val;       long long_val;       double double_val; }; 可以使用one4all變數來儲存int、long 或double,條件是在不同的時間進行。 定義一個共用體變數,one4all pai

重拾C語言——結構共用

結構體:不同型別變數的集合 陣列:相同型別變數的集合struct長度=最後一個成員大小+最後一個成員偏移量+填充值; 結構體中的成員的偏移量需是自身長度的整數倍(不夠就填充); 結構體總長度必須是佔記憶體最大的成員的長度的整數倍。 三種方式定義結構體: 1.struct

C++筆記(四)結構共用

#include<iostream> #include<string> using namespace std; //定義結構,可以同時儲存多種不同型別的資料。 struct person { string name;

C程式設計 | 結構共用連結串列

一、定義和使用結構體變數 1、自己建立結構體型別 C語言允許使用者自己建立由不同型別資料組成的組合型的資料結構,它稱為結構體(structre)。 例如在程式中要用的如下圖所示的資料結構,可以在程式中自己建立一個結構體型別: struct Student

結構(記憶體對齊)共用C語言

結構體 C語言學到現在,相信大家已經熟知了基本型別(整型、實型、字元型)的變數和一種構造型別資料(陣列),但是隻有這些資料型別是不夠的,因此我們接下來介紹C語言中可以將不同型別的定義自己的資料型別——結構體。 結構體與陣列的比較 由於結構體和陣列有很大的類似之處,所

C語言高階篇 - 6.陣列&字串&結構&共用&列舉

1.程式中記憶體從哪裡來1 1.1、程式執行需要記憶體支援 ()對程式來說,記憶體就是程式的立足之地(程式是被放在記憶體中執行的);程式執行時需要記憶體來儲存一些臨時變數。 1.2、記憶體管理最終是由作業系統完成的 (1)記憶體本身在物理上是一個硬體器件,由硬體系統提供。 (2)

C語言(三 字串、結構共用、輸入輸出)

字串 字串是儲存了一些字元,最後以null(’/0’)結尾的一維字元陣列。 char str[6] = {'h','e','l','l','o','/0'}; char str[ ] = "hello" ; 還有一些字串操作函式: 1、strcpy(s1,s2) 複製s2到s1 2

結構共用列舉型別(一)

定義描述三維座標點(x,y,z)的結構體型別變數,完成座標點的輸入和輸出,並求出兩點之間的距離   程式碼如下: #include <iostream> #include <cmath> #define N 2 using namespace std; stru

C結構共用、列舉

一、結構體三種定義方式 1、先宣告結構體型別,再定義變數名 struct student { int num; char name[20]; char sex; int age; char addr[30]; } struct student student1

1-C語言之結構共用、列舉

一、關鍵字說明         C語言有32個關鍵字,C語言通過關鍵字的使用使編譯器進行相關的操作          結構體對應關鍵字struct          共用體(聯合體)對應的關鍵字是union          列舉型別對應的關鍵字是enum 二、結構

C++中的共用(union)結構解析與結構(struct)共用(union) 的區別

共用體(union) 一、 基礎概念 有時需要使幾種不同型別的變數存放在同一段記憶體單元中。雖然在同一段記憶體中不同資料型別所佔位元組數不同,但都從同一地址開始存放,也就是使用了覆蓋技術,幾個變數互相覆蓋。這種使幾個不同的變數共佔一段記憶體的結構,稱為共同體型別的結構(也稱

巨集(#define)類型別名(typedef)在結構共用(聯合體)型別定義中的應用

在學習cocos2d-x的過程中,經常看到各種大寫的識別符號,有些是自定義的巨集,有些是複雜型別的別名。前者用#define來實現,後者用typedef來實現。它們的存在有兩個共同目的(當然還有其他不同的目的),一是用簡單的識別符號來代替複雜的程式碼,二是(在條件編譯語句的

C語言之結構共用、列舉

結構體的基本格式如下:#include <stdio.h> struct student //結構體型別的說明與定義分開。 宣告 { int age; /*年齡*/ float score; /*分數*/ char sex; /*性別*/ }; int main() {

C語言中利用共用結構、位域實現位操作

編寫過51(MCU)程式的同學都知道51架構的MCU支援位操作,這是一個很方便的特性,在讀取/修改暫存器某位的值時非常方便快捷。但其他架構的MCU大多都不支援該特性,即不支援位操作,所在在對暫存器中某一位進行操作的時候都是and/or兩個操作共同使用,在編寫程式時非常麻煩。

[C#.NET 拾遺補漏]14:使用結構實現共用

在 C 和 C# 程式語言中,**結構體(Struct)**是值型別資料結構,它使得一個單一變數可以儲存多種型別的相關資料。在 C 語言中還有一種和結構體非常類似的語法,叫**共用體(Union)**,有時也被直譯為**聯合**或者**聯合體**。而在 C# 中並沒有共用體這樣一個定義,本文將介紹如何使用 C

結構共用,枚舉所占內存大小

http 結構體 int img main printf har alt mon 結構體要註意位補齊(有4位補齊和8位補齊,默認8位) 1 #include<stdio.h> 2 #pragma pack(push) 3 #pragma pack(4)

5、C_數組&字符串&結構&共用&枚舉

常用 字節對齊 底層 不知道 div 修改 自動 當我 stdio.h 程序中內存從哪裏來 三種內存來源:棧(stack)、堆(heap)、數據區(.date); 棧(stack) 運行自動分配、自動回收,不需要程序員手工幹預; 棧內存可以反復使用;