请详细回答下列问题,高分追加哦!!!

1.main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译... 1.main()
{
union
{
char ch[2];
int d;
}s;
s.d=0x4321;
printf("%x,%x\n",s.ch[0],s.ch[1]);
}
在16位编译系统上,程序执行后的输出结果是?(要分析过程)

2.#include "stdio.h"
union myun
{
struct
{
int x,y,z;
}u;
int k;
}a;
main()
{
a.u.x=4;
a.u.y=5;
a.u.z=6;
a.k=0;
printf("%d\n",a.u.x);
}
求输出结果?解析过程及知识点!

3.struct stud
{
char num[6];
int s[4];
double ave;
} a,*p;
问变量a在内存中所占字节?

4.#include "stdio.h"
struct NODE
{
int k;
struct NODE *link;
};
main()
{
struct NODE m[5],*p=m,*q=m+4;
int i=0;
while(p!=q)
{
p->k=++i;
p++;
q->k=i++;
q--;
}
q->k=i;
for(i=0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
}
求输出结果
展开
 我来答
小鱼1979117
2011-02-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1905
采纳率:0%
帮助的人:1121万
展开全部
(1)
21,43

union结构里所有的变量使用的相同起始地址的一块空间。对d进行赋值0x4321之后实际上ch[2]也被赋予同样的内容了。不过integer 16位存储的时候高位在后,低位在前,再显示的时候先看到21,后看到43。

(2)
0

同上,union共同相同空间,所以之前对a进行赋值之后,这块空间的内容是[4,5,6]。
但这之后又对k赋值,k实际上和u、确切的说是u中第一个元素x具有完全相同的地址空间,所以对k的赋值等于对x赋值,x因此变成0。

(3)
我个人觉得是32而不是30。
int占4个字节,4个int是16个,double是8个字节,这些没有问题。
关键是char num[6],虽然只占6个,但struct stud按字节对齐之后相当于占了8个。
一共8+16+8=32。
什么是对齐可以baidu一下或者看看相关书籍,很详细的。

(4)
13431

NODE是一个单项链表。空间是静态分配好的一个长度为5的数组,并且p指向头,q指向尾。
余下的就是i++和++i的操作了,p++和q--是分别从头、尾同时向中间移动。
最后顺序显示数组中的5个元素。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式