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;}