免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2128 | 回复: 12
打印 上一主题 下一主题

一个 void * 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-13 09:24 |只看该作者 |倒序浏览
代码运行到 28 处时会出现 Segmentation fault (core dumped)。
如果是运行的27 行出就得得到正确的结果,虽然编译时没有错误。
从语法的角度理解28行是正确的做法,但是为什么会出错?



  8 enum
  9 {
10     ZERO,
11     ONE,
12     TWO,
13     THREE
14 };
15
16 int out(int cc)
17 {
18     printf("OUT put \n");
19     printf("cc = %d\n", cc);
20
21     return 0;
22 }
23
24 int output(void *argv)
25 {
26     //out((int )argv);
27     int i;
28     
29     printf("glj 111 \n");
30     i = *(int *)argv;
31     out(*(int *)argv);
32     
33     return 0;
34 }
35
36 int main(void)
37 {   
38     int *tmp;
39     int a = 3;
40     
41     tmp = &a;
42    // output(tmp);
43     output(5);
44     output(TWO);
45     return 0;
46 }

论坛徽章:
0
2 [报告]
发表于 2012-02-13 16:15 |只看该作者
还是希望能有人来解答下

论坛徽章:
0
3 [报告]
发表于 2012-02-13 17:32 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
4 [报告]
发表于 2012-02-13 19:15 |只看该作者
不能对该地址寻址

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
5 [报告]
发表于 2012-02-13 19:16 |只看该作者
*(int*)5
5不是一个很好的地址

论坛徽章:
0
6 [报告]
发表于 2012-02-13 21:38 |只看该作者
把output(5);去掉后,output(TWO);还是出一样的错误呀,
两个的错误原因是相同的么?
他们是什么地址空间?为什么不能访问?

论坛徽章:
0
7 [报告]
发表于 2012-02-14 09:36 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2012-02-14 11:29 |只看该作者
新手不太懂哦·····

论坛徽章:
0
9 [报告]
发表于 2012-02-14 16:34 |只看该作者
回复 7# gswen


    也就是说output(5),跟output(TWO)所引起的错误原因是一样的了?

论坛徽章:
0
10 [报告]
发表于 2012-02-14 17:28 |只看该作者
不大懂得啊

葵力健                http://www.guilige.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP