如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
一般情况下, 不行。复杂之处在于, 有的机器不同类型数据的指针有不同的内
部表达。这样的NULL 定义对于接受字符指针的的函数没有问题, 但对于其它类型的指针参数仍然有问题(在缺少原型的情况下), 而合法的构造如FILE *fp = NULL;则会失败。
不过, ANSI C 允许NULL 的可选定义#define NULL ((void *)0)
除了潜在地帮助错误程序运行(仅限于使用同样类型指针的机器, 因此帮助有限) 以外, 这样的定义还可以发现错误使用NULL 的程序(例如, 在实际需要使用ASCII NUL 字符的地方; )。无论如何, ANSI 函数原型确保大多数(尽管不是全部;)指针参数在传入函数时正确转换。因此, 这个问题有些多余。
部表达。这样的NULL 定义对于接受字符指针的的函数没有问题, 但对于其它类型的指针参数仍然有问题(在缺少原型的情况下), 而合法的构造如FILE *fp = NULL;则会失败。
不过, ANSI C 允许NULL 的可选定义#define NULL ((void *)0)
除了潜在地帮助错误程序运行(仅限于使用同样类型指针的机器, 因此帮助有限) 以外, 这样的定义还可以发现错误使用NULL 的程序(例如, 在实际需要使用ASCII NUL 字符的地方; )。无论如何, ANSI 函数原型确保大多数(尽管不是全部;)指针参数在传入函数时正确转换。因此, 这个问题有些多余。
【如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗】相关文章
1. 如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2. 如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
6. 简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
7. const char*, char const*, char*const的区别是什么
9. 软件测试LoadRunner面试题:If web server, database and Network are all fine where could be the problem?
10. String这个类型的class为何定义成final?
本文来源:https://www.mianshiwenti.com/a13097.html
进入下载页面
上一篇:C/C++ 笔试、面试题目大汇总
下一篇:统计每一学生的平均成绩
﹝如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗﹞相关内容
- 如果你被录用,是否马上就可来上班?
- 在使用非全零作为空指针内部表达的机器上, NULL是如何定义
- NULL是什么,它是怎么定义的
- 什么是makefile? 如何编写makefile?
- 函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
- 编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
- 金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
- 编写类String 的构造函数、析构函数和赋值函数
- 编写类String的构造函数、析构函数和赋值函数
- 介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?