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) 運行自動分配、自動回收,不需要程序員手工幹預; 棧內存可以反復使用;