读书人

union中的数组元素地址能取出来吗?解

发布时间: 2012-05-22 18:18:54 作者: rapoo

union中的数组元素地址能取出来吗?
自己写的练习如下:

C/C++ code
#include <iostream>using namespace std;union{    unsigned int a;    char b[5];}c,d;void main(void){    int i = 0;    c.a = 0x31313131;    for(i = 0; i <=4; i++)        cout << c.b[i] << "  " << &c.b[i] << endl;}

输出是:

1 1111
1 111
1 11
1 1

c.b[5]是0,输出为空,这个可以理解,但是为什么&c.b[i]的输出是一个位递减的1111呢?
请各位看看,谢谢^-^

[解决办法]
C++中的cout为了不让你操作地址,所以<<操作符对地址没有用,如果想输出地址瞧的话,这样用吧。
C/C++ code
void main(void){    int i = 0;    c.a = 0x31313131;    for(i = 0; i <=4; i++)    {        printf("%p  ",&c.b[i]);    }    //cout << c.b[i] << "  " << &c.b[i] << endl;} 

读书人网 >C++

热点推荐