C++筆記(四)結構體和共用體
阿新 • • 發佈:2019-01-30
#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