c语言两小程序帮我分析

[复制链接]
查看11 | 回复5 | 2020-1-2 08:55:23 | 显示全部楼层 |阅读模式
第一个,a是个union型变量,其中的,x,y,z和k共用内存,因为它们都是int型,所以,x和k在内存中是重叠的,k=0覆盖了原来x的值4.第二个,用myf=fopen(fname,"w");这种方式打开文件,意思是创建并写入,后面的创建把前面的内容覆盖掉了,所以里面只有后写入的内容....
回复

使用道具 举报

千问 | 2020-1-2 08:55:23 | 显示全部楼层
第一题:union表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。因此你开始赋值struct,后来赋值k时,a.u.x已经被重新赋值了。...
回复

使用道具 举报

千问 | 2020-1-2 08:55:23 | 显示全部楼层
第一题:这题要掌握的要点是 联合体 union 是成员变量共用一个存储空间的。具体来说,struct{ int x, y, z; } u和int k在内存中是存在同一个地址的。所以前面虽然a.u.x=4,第一个int被赋值为4,但是后来a.k=0的赋值操作把这篇内存的值覆盖了,所以 输出a.u.x的值其实是0。这样说能明白吗?第二题的题目你能重新贴一...
回复

使用道具 举报

千问 | 2020-1-2 08:55:23 | 显示全部楼层
函数fun的功能是计算以'\0'结束的字符串的长度。而"helloworld"的字符是11个,所以输出11.传入函数fun的指针变量的值是字符串"helloworld"的首地址,也就是字符'h'的地址,假设这个地址是1.循环"while(*p!='\0')p++"的意思就是当指针p指向的字符为'\0'时结束循环,此时p的值就是字符串结尾'\0'的...
回复

使用道具 举报

千问 | 2020-1-2 08:55:23 | 显示全部楼层
嗯,这种问题建议多看一下书,应该都可以找到答案。兴趣是你学习c语言的最大动力。还有上面的两位回答的都很好...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行