/* 下面简单介绍下位段
通过指针变量访问并输出结构数组的各元素
位段成员可以与一般的结构成员 混用
struct employ
{
float pay;
unsigned short lay_off:1;
unsigned short hourly:1;
unsigned short deductions:3;
};
位段的使用方法
struct<结构名>
{
<类型名><位段名>:<位段的二进制位数>;
<类型名><位段名>:<位段的二进制位数>;
<类型名><位段名>:<位段的二进制位数>;
};
位段的优点:有效的利用存储空间。
*/
//用位段来存放学习的信息 改编8---5 -----通过指针变量访问并输出结构数组的各元素
#include<iostream.h>
#include<conio.h>
#define student__num 5
struct student
{
unsigned short num:8; // 8为位段的二进制位数
unsigned char sex:7; //因为主函数中的N,M的二进制位分别为01001110,01001011,所以只要位段的二进制位为7,或者8,
//均可。如果是小于7的数结果会出预料的
unsigned short score:7;
};
void displaystudentinfo(const student *const);
int main()
{
student theclass[student__num]={
{110,'M',98},
{120,'M',78},
{130,'N',89},
{140,'M',78},
{150,'N',69},
};
student *pstud=theclass; //pstud 为指向student 结构的指针,其值被初始化成数组theclass的首地址,
cout<<"sizeof(student)="<<sizeof(student)<<endl;
for(int i=0;i<student__num;i++)//通过时pstud自增,使得pstud指向theclass[i],然后调用函数输出数组中各元素的成员值
displaystudentinfo(pstud++);
getch();return 0;
}
void displaystudentinfo(const student *const stud)//const 限定防止原数组被改变
{
cout<<"num="<<stud->num<<"\t";
cout<<"sex="<<stud->sex<<"\t";
cout<<"score="<<stud->score<<endl<<endl;
}
位段

最新推荐文章于 2024-06-03 20:32:21 发布