联合和内存管理
Union and memory management
我在面试时得到了以下代码:-
union mix
{
int i;
char c[2];
};
int main()
{
union mix key;
key.i=512;
printf("\n %d,%d,%d",key.i,key.c[0],key.c[1]);
return 0;
}
当我回家并在系统上 运行 它时,我得到了 输出:- 512,0,2.
谁能给我解释一下它是如何工作的或者为什么是 c[1]=2?
编辑 :- 我只知道它与内存中的位存储有关。
是一个联合,意思是i
和c
占用相同的内存。
512 是 0x200,意思是第一个字节是零,第二个是 2(每个字节有两个十六进制数字)。
这当然取决于 CPU.
的字节顺序
我在面试时得到了以下代码:-
union mix
{
int i;
char c[2];
};
int main()
{
union mix key;
key.i=512;
printf("\n %d,%d,%d",key.i,key.c[0],key.c[1]);
return 0;
}
当我回家并在系统上 运行 它时,我得到了 输出:- 512,0,2.
谁能给我解释一下它是如何工作的或者为什么是 c[1]=2?
编辑 :- 我只知道它与内存中的位存储有关。
是一个联合,意思是i
和c
占用相同的内存。
512 是 0x200,意思是第一个字节是零,第二个是 2(每个字节有两个十六进制数字)。
这当然取决于 CPU.