CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

请问以下代码里,怎么知道x 和 xx 的值?因为等号左边的strb的成员没有初始化呀?

楼主huhaha7171(虎虎)2004-08-04 11:56:00 在 C/C++ / C++ 语言 提问

已知条件:  
  class   classA{  
                            public:  
                                          unionA   UA;     func1();     func2();  
                            ...}  
   
  typedef   union   {  
                            structA   strA;       structB   strB;  
                            ...}unionA;  
   
  typedef   struct   {  
                            char   cA;     int     iA;  
                            ...}structA;  
   
  typedef   struct     {  
                              char   cB;   int     iB;  
                              ...}structB;  
   
  在函数中:  
  MAIN()  
  {   classA   A;      
  A.func1();     A.func2();//2个函数对A.UA.STRA.cA   和   iA进行了初始化  
  char   x   =   A.UA.strB.cB;//???  
  int   xx   =   A.UA.strB.iB;//???  
  我想问的是最后2句等号左边的值是多少?代码中从来没有进行过处理,怎么能附值给X和XX呢?谢谢!  
       
   
  问题点数:30、回复次数:3Top

1 楼kvls(冰茶)回复于 2004-08-04 16:56:08 得分 15

A.UA.strB.cB   =   A.UA.strA.cA  
  A.UA.strB.iB   =   A.UA.strA.iA  
   
  因为这是一个联合,A和B是同样的内存Top

2 楼huhaha7171(虎虎)回复于 2004-08-04 17:33:57 得分 0

kvls(冰茶):我还是不能理解,可能上面的例子给你错误的印象。  
   
  strB为:  
  typedef   struct   {  
        BYTE     SRB_Cmd;                     //   ASPI   command   code   =   SC_HA_INQUIRY  
        BYTE     SRB_Status;                     //   ASPI   command   status   byte  
        BYTE     SRB_HaId;                         //   ASPI   host   adapter   number  
        BYTE     SRB_Flags;                       //   ASPI   request   flags  
        DWORD   SRB_Hdr_Rsvd;               //   Reserved,   MUST   =   0  
        BYTE     HA_Count;                         //   Number   of   host   adapters   present  
        BYTE     HA_SCSI_ID;                     //   SCSI   ID   of   host   adapter  
        BYTE     HA_ManagerId[16];         //   String   describing   the   manager  
        BYTE     HA_Identifier[16];           //   String   describing   the   host   adapter  
        BYTE     HA_Unique[16];               //   Host   Adapter   Unique   parameters  
        WORD     HA_Rsvd1;  
  }   SRB_HAInquiry,   *PSRB_HAInquiry;  
   
  strA为:  
  typedef   struct   {  
        BYTE     SRB_Cmd;                           //ASPI   command   code   =   SC_EXEC_SCSI_CMD  
        BYTE     SRB_Status;                     //   ASPI   command   status   byte  
        BYTE     SRB_HaId;                         //   ASPI   host   adapter   number  
        BYTE     SRB_Flags;                       //   ASPI   request   flags  
        DWORD   SRB_Hdr_Rsvd;                 //   Reserved  
        BYTE     SRB_Target;                     //   Target's   SCSI   ID  
        BYTE     SRB_Lun;                           //   Target's   LUN   number  
        WORD     SRB_Rsvd1;                       //   Reserved   for   Alignment  
        DWORD   SRB_BufLen;                     //   Data   Allocation   Length  
        BYTE     *SRB_BufPointer;           //   Data   Buffer   Pointer  
        BYTE     SRB_SenseLen;                 //   Sense   Allocation   Length  
        BYTE     SRB_CDBLen;                   //   CDB   Length  
        BYTE     SRB_HaStat;                     //   Host   Adapter   Status  
        BYTE     SRB_TargStat;                 //   Target   Status  
        void     *SRB_PostProc;               //   Post   routine  
        void     *SRB_Rsvd2;                     //   Reserved  
        BYTE     SRB_Rsvd3[16];               //   Reserved   for   alignment  
        BYTE     SRB_CDBByte[16];                 //   SCSI   CDB  
        BYTE     SRB_SenseArea[SENSE_LEN+2];//   Request   Sense   buffer  
  }   SRB_ExecSCSICmd,   *PSRB_ExecSCSICmd;  
   
  经过调用A.func1();     A.func2();2个函数   ,对strA的   BYTE     SRB_Cmd,BYTE     SRB_HaId,BYTE     SRB_Flags,BYTE     SRB_SenseLen,BYTE     SRB_SenseLen进行了附值,  
  而后面用到的是strB的     BYTE     HA_SCSI_ID,   BYTE     HA_Unique[16]中的(HA_Unique[3])。  
   
  联合的成员共用内存,但是位置也对不上。请帮忙看看,谢谢了!Top

3 楼whyglinux(山青水秀)回复于 2004-08-19 15:44:35 得分 15

联合成员,共享内存!  
   
  (使我想起了对洪教主的赞扬:“仙福永享,寿与天齐”。没记错吧?)Top

相关问题

  • mysql初始化
  • list初始化
  • 初始化
  • 对象不是不能这样初始化吗,为什么这个程序中这样初始化了呢:RMB x = 10000.0;?
  • 关于初始化
  • DW 的初始化
  • 关于初始化
  • 初始化问题
  • 类的初始化
  • ADO 的初始化

关键词

  • 内存
  • srb
  • strb
  • aspi
  • ua
  • rsvd
  • stra
  • 成员
  • host adapter
  • byte

得分解答快速导航

  • 帖主:huhaha7171
  • kvls
  • whyglinux

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo