union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 14:15:19
union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]=1; printf("%d\n",a.i); return 0; } 输出结果是什么,
union 只分配一块内存,有i和x公用, 即修改了x的内容,i的内容也改变了
按照内存分布,x 改之后内存为 0x010a
也就是说,i的内存时0x10a
也就是10进制266
再问: 谢谢。只是我是C++初学者,对union这方面只是一点都不懂,能再具体点嘛
再答: union这种类型,就是内部的变量共同使用一块空间,按照size大的分配 int i 占4个字节 char x[2] 占2个,所以一共分配了4个字节 可以使用 sizeof(a) 来看下它的总大小 一共4个字节的内存,对应x来说相当于占用了低2个字节,而给x赋值的1,和10,就存在个位和十位上了(十六进制) 如果还不懂,那没啥办法了,以后多学点就知道了
再问: 明白了。谢谢!
按照内存分布,x 改之后内存为 0x010a
也就是说,i的内存时0x10a
也就是10进制266
再问: 谢谢。只是我是C++初学者,对union这方面只是一点都不懂,能再具体点嘛
再答: union这种类型,就是内部的变量共同使用一块空间,按照size大的分配 int i 占4个字节 char x[2] 占2个,所以一共分配了4个字节 可以使用 sizeof(a) 来看下它的总大小 一共4个字节的内存,对应x来说相当于占用了低2个字节,而给x赋值的1,和10,就存在个位和十位上了(十六进制) 如果还不懂,那没啥办法了,以后多学点就知道了
再问: 明白了。谢谢!
union { int i; char x[2]; }a; int main() { a.x[0]=10; a.x[1]
union pw {int i;char ch[2]; }a; main () {a.ch[0]=10; a.ch[1]
void main() {union { int k; char i[2]; }*s,a; s=&a; s->i[0]=
int func(int x,int y ) { return(x+y) } main() {int a=1,b=2,c
这个程序语法的错误 #include void main(){int x ,y ;char x='A';int y='A
void main() { int a=1234,x; x=(char)a; printf("a[d]=%d a[x]=
#include void f(int*x,int y) {*x=y+1;y=*x+2;} main() {int a=
有如下程序 int runc(int a,int b) { return(a+b);} main( ) { int x=
C语言基本知识void main(){int a=1234,x;x=(char)a;printf(“a[d]=%d a[
main(){int a[]={2,4,6,8,10};int y=1,x,*p;p=&a[1];for(x=0;x
谁来帮我找找错啊int max(int a,int b);void main(){int x,y,z;int max(i
下列程序,为何错了 # include main() { int x=010,y,z=0x10; char c1='A'