免费注册 查看新帖 |

Chinaunix

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

世界真奇妙,这个也会出错。。 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-09-24 16:04 |只看该作者
原帖由 scutan 于 2008-9-24 15:59 发表
C有问题的原因在于, 你在定义t1的时候, 此时p的值未知. 如果放到main()中定义就可以了.


这位大虾,这个结构要被多处用到,所以定义成全局变量,不能放到main()中。。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
22 [报告]
发表于 2008-09-24 16:06 |只看该作者
原帖由 maxxfire 于 2008-9-24 16:04 发表


这位大虾,这个结构要被多处用到,所以定义成全局变量,不能放到main()中。。


那就直接用&a不行吗

论坛徽章:
0
23 [报告]
发表于 2008-09-24 16:07 |只看该作者

回复 #21 maxxfire 的帖子

LZ我们俩的系统和编译器版本一样,我这里没有问题,没有任何警告和错误信息,,所以代码应该没问题,你的那个提示好像是因为p引用了一个非const值

论坛徽章:
0
24 [报告]
发表于 2008-09-24 16:08 |只看该作者
原帖由 maxxfire 于 2008-9-24 16:04 发表


这位大虾,这个结构要被多处用到,所以定义成全局变量,不能放到main()中。。


很简单, 在全局空间定义struct T t1; 然后再写一个初始化函数对t1进行赋值.

论坛徽章:
0
25 [报告]
发表于 2008-09-24 16:13 |只看该作者
仔细想想,C语言这样报错很不合常理。。
因为我已经对p做了初始化了:
int *p=&a;

论坛徽章:
0
26 [报告]
发表于 2008-09-24 16:15 |只看该作者
原帖由 maxxfire 于 2008-9-24 16:13 发表
仔细想想,C语言这样报错很不合常理。。
因为我已经对p做了初始化了:
int *p=&a;


那这样吧

  1. struct T t1 = {
  2.         "fuck",
  3.         &a
  4. };
复制代码

论坛徽章:
0
27 [报告]
发表于 2008-09-24 16:17 |只看该作者
原帖由 maxxfire 于 2008-9-24 16:13 发表
仔细想想,C语言这样报错很不合常理。。
因为我已经对p做了初始化了:
int *p=&a;

可以实验一下
1,更改int a;定义改为 const int a;
2,t1 内 p改为&a;

看一下实验结果

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
28 [报告]
发表于 2008-09-24 16:28 |只看该作者
&a是没问题的,我强调了几次了,呵呵

论坛徽章:
0
29 [报告]
发表于 2008-09-24 17:06 |只看该作者
全局变量初始化的顺序的问题吧
和编译器的实现有关的
标准只是说要在main所有语句执行前初始化 没有说过全局变量初始化的顺序...
如果你非得用全局的 不如自己在main最前面调用自己写一个 __my__init__() 来初始化

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
30 [报告]
发表于 2008-09-24 17:18 |只看该作者
原帖由 DraculaW 于 2008-9-24 17:06 发表
全局变量初始化的顺序的问题吧
和编译器的实现有关的
标准只是说要在main所有语句执行前初始化 没有说过全局变量初始化的顺序...
如果你非得用全局的 不如自己在main最前面调用自己写一个 __my__init__() 来 ...


觉得LS的说道关键的地方了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP