1. 程式人生 > >C++筆記(四)結構體和共用體

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

#include<iostream>
#include<string>

using namespace std;


//定義結構,可以同時儲存多種不同型別的資料。
struct person {
    string name;
    short age;
};

//特定位數的結構成員
struct user {
    unsigned int age : 4;//佔用4位
    bool isMan : 1;//佔用1位
};


//共用體中的資料共用相同的記憶體地址,記憶體地址的長度為最大成員的長度。
//下面的one4all,可以儲存int,long,double值,但同一時間只能儲存一種。
union one4all { int int_v; long long_v; double double_v; }; int main() { //結構初始化 person p = { "yueer",20 }; person p1{"maomao",21}; p.name = "fsfsdfsd"; cout << "name=" << p.name << " age=" << p.age << endl; cout << "name=" << p1.name << " age="
<< p1.age << endl; //結構陣列 person ps[2] = { {"aaa",20} ,{"bbb",30} }; cout << "name=" << ps[0].name << " age=" << ps[0].age << endl; cout << "name=" << ps[1].name << " age=" << ps[1].age << endl; user u = { 21321
,true }; cout << "age = " << u.age <<" isMan = " << u.isMan << endl; //共用體 one4all o4a; cout << "size of one4all is " << sizeof(o4a) << endl; o4a.int_v = 123; cout << "union int_v=" << o4a.int_v << " long_v=" << o4a.long_v << " double_v=" << o4a.double_v << endl; o4a.long_v = 123456; cout << "union int_v=" << o4a.int_v << " long_v=" << o4a.long_v << " double_v=" << o4a.double_v << endl; o4a.double_v = 3.4455; cout << "union int_v=" << o4a.int_v << " long_v=" << o4a.long_v << " double_v=" << o4a.double_v << endl; return 0; }

輸出結果:

name=fsfsdfsd  age=20
name=maomao  age=21
name=aaa  age=20
name=bbb  age=30
age = 9 isMan = 1
size of one4all is 8
union int_v=123 long_v=123 double_v=-9.25596e+61
union int_v=123456 long_v=123456 double_v=-9.25596e+61
union int_v=1305670058 long_v=1305670058 double_v=3.4455