搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 帮忙给出解释 ,谢谢!
标题:
帮忙给出解释 ,谢谢!
只看楼主
阶段丶成长
来 自:中国
等 级:
论坛游民
帖 子:41
专家分:32
注 册:2013-11-11
结帖率:
87.5%
楼主
已结贴
√
问题点数:17 回复次数:7
帮忙给出解释 ,谢谢!
#include <stdio.h>
int main( )
{
union stu /* 定义共用体类型 */
{
int num;
float score;
char *name;
}student;
student.num=1010;
student.score=80;
student.name="zhangsan";
printf("%d\n", student.num);
return 0;
}
输出结果shi:4349984
搜索更多相关主题的帖子:
include
return
2014-05-10 17:40
kwxx
等 级:
蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
第
2
楼
得分:5
你这是共用体,共享同一内存,同一时刻只有一个值有效。最终有效的是:student.name="zhangsan"; 。所以输出错误。这是共用体最基本的定义。你还是先看看书吧。
2014-05-10 18:00
top398
等 级:
蝙蝠侠
威 望:
2
帖 子:427
专家分:857
注 册:2014-5-2
第
3
楼
得分:5
看起来楼主本来是想写个结构,或者这个题本身是为了强调结构和共用的区别。
struct stu /* 定义共用体类型 */
{
int num;
float score;
char *name;
}student;
把 union 换成 struct 后,就各是各了。
2014-05-10 18:58
阶段丶成长
来 自:中国
等 级:
论坛游民
帖 子:41
专家分:32
注 册:2013-11-11
第
4
楼
得分:0
回复 2 楼 kwxx
我知道这是共用体问题,但是为什么出现的是一个数值,而且还是固定不变的···
每一个阶段,都是一次不可或缺的成长···
2014-05-12 16:15
阶段丶成长
来 自:中国
等 级:
论坛游民
帖 子:41
专家分:32
注 册:2013-11-11
第
5
楼
得分:0
回复 3 楼 top398
我需要的是就题论题,而不是换成结构体···
每一个阶段,都是一次不可或缺的成长···
2014-05-12 16:15
embed_xuel
等 级:
贵宾
威 望:
58
帖 子:3845
专家分:11385
注 册:2011-9-13
第
6
楼
得分:5
回复 4 楼 阶段丶成长
换台电脑再试试,看还是一样的数值吗?
总有那身价贱的人给作业贴回复完整的代码
2014-05-12 16:21
zklhp
来 自:china
等 级:
贵宾
威 望:
254
帖 子:11485
专家分:33241
注 册:2007-7-10
第
7
楼
得分:5
最终输出的是"zhangsan"这个字符串在内存中的地址 也就是说
printf("%d\n", student.num);
printf("%d\n", "zhangsan");
这俩其实是一样的
PS 默认情况下 同样的字符串地址是一样的
2014-05-12 16:38
top398
等 级:
蝙蝠侠
威 望:
2
帖 子:427
专家分:857
注 册:2014-5-2
第
8
楼
得分:0
如2楼解释过的,输出的是字符常量的地址。
该常量固定位于可执行文件的某一位置,运行时系统也将其装载到固定的用户地址空间。
楼主也可照6楼的方法试试看。
2014-05-12 16:41
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-431326-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.632136 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved