免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yellowweng
打印 上一主题 下一主题

[C++] 请教一个union初始化的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-10-29 09:47 |只看该作者
回复 10# lin5161678


也不全是...a[0]确实是被赋值为1了...这也合情合理阿..

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
12 [报告]
发表于 2012-10-29 12:54 |只看该作者
回复 11# FaintKnowledge
的确会被赋值为1 但是 你在#9提到的垃圾值是什么意思?

   

论坛徽章:
0
13 [报告]
发表于 2012-10-29 13:18 |只看该作者
本帖最后由 FaintKnowledge 于 2012-10-29 13:33 编辑

回复 12# lin5161678


我说的垃圾值就是以%c打印的1了(你前面不是提到过了?我只是验证下,不是笑脸,是个方框,中间一个问号. ).


我说的垃圾值意思是:内存中不确定的值...
我开始的理解是,既然第一个位置被赋值了,后面的没有赋值,应该都是垃圾值吧?也应该都赋值给数组a[]才对...,比如:
  1. #include "stdio.h"
  2. #include "stdlib.h"

  3. main()
  4. {
  5.     char a[200];
  6.     printf("%s",a);
  7. }

  8. 输出结果是:

  9. [root@speedLinux phpcms]# ./a.out
  10. 蔀劮@淇
  11.         (淇t喎
复制代码
但是数组a[]的值都为NULL了


附加修改:
我测试了下,原因应该在这里了:myunion o = {1};除了第一个位置的,其他的都赋值为NULL;如果myunion o ={};这样就将第一个赋值为0(i和a[0]),其他的为NULL。如果单单只是:myunion o;内存中就会出现:
-1217015184
112
p
These are array a bellow
p

u





)

//除了第一个可以解释,其他的都是乱其八糟的了

论坛徽章:
1
摩羯座
日期:2013-12-19 10:04:07
14 [报告]
发表于 2012-10-29 13:49 |只看该作者
本帖最后由 lin5161678 于 2012-10-29 13:50 编辑

回复 13# FaintKnowledge

你弄错了 有初始化的时候 未指定的字节 不是设置为 NULL 而是 '\0' 或者说 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP