免费注册 查看新帖 |

Chinaunix

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

[函数] 函数指针为NULL,执行会有什么结果 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-08 18:20 |只看该作者 |倒序浏览
#include <stdio.h>

typedef void (*func)(const char *);

int main(void)
{
    func string_func = NULL;

    string_func("AIX-UNIX");

    return 0;
}

请问这个函数运行会有什么结果, 按资料介绍应该是什么都没有,因为函数指针为NULL,不运行,但是我在AIX上一运行,CPU马上100%. 然后coredump, 不知道是哪里出问题了??

论坛徽章:
0
2 [报告]
发表于 2007-10-08 18:23 |只看该作者
指向“NULL”地址,或者某个随机的地址,运气好的话,不会挂。“NULL”并不表示真的没有地址。

论坛徽章:
0
3 [报告]
发表于 2007-10-08 18:24 |只看该作者
你调用地址为0的函数,能不出问题么?

论坛徽章:
0
4 [报告]
发表于 2007-10-08 18:25 |只看该作者
对NULL指针解引用一般情况下都是段错误. 我在Linux上运行也是报的段错误.

论坛徽章:
0
5 [报告]
发表于 2007-10-08 18:53 |只看该作者
嵌入式有时侯 用这种方式软复位:wink:

论坛徽章:
0
6 [报告]
发表于 2007-10-09 10:15 |只看该作者
一般情况下会出现Segmentation fault, 即使一开始不出现,那么在某次的执行过程中也一定会出现

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2007-10-09 11:06 |只看该作者
原帖由 tyc611 于 2007-10-8 18:24 发表
你调用地址为0的函数,能不出问题么?


C程序给一个指针赋值0或是NULL,都表示指向NULL这个特殊地址
但是反过来,这个NULL未必指向地址0x0

不同的操作系统实现对NULL有不同的定义

论坛徽章:
0
8 [报告]
发表于 2007-10-09 11:09 |只看该作者
原帖由 ssafa 于 2007-10-8 18:23 发表
指向“NULL”地址,或者某个随机的地址,运气好的话,不会挂。“NULL”并不表示真的没有地址。


或者某个随机的地址?这个是什么意思?请教一下。
不是说NULL都是被define为0,你说的某个随即的地址是说NULL没有被define为0的时候吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2007-10-09 11:19 |只看该作者
原帖由 shixiaobo925 于 2007-10-9 11:09 发表


或者某个随机的地址?这个是什么意思?请教一下。
不是说NULL都是被define为0,你说的某个随即的地址是说NULL没有被define为0的时候吗?


给指针赋值0等同于赋值NULL
但NULL未必等同于0
NULL的确切地址在哪里是操作系统和编译器共同决定的
C程序里面只知道NULL被define为0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP