本文主要是介绍C++结构体和共用体,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
例如 struct shoes {
char name[20];
int size;
double price;
};
下面就可以按描述创建结构变量。
shoes sport;
通过sport.name 对结构体中成员变量进行访问例如 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++结构体和共用体的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!