位段

位段应用实例
/*  下面简单介绍下位段 
  通过指针变量访问并输出结构数组的各元素
  位段成员可以与一般的结构成员 混用
  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;       
     
     
} 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值