int *p=NULL和*p= NULL有什么区别


Posted in 面试题 onOctober 23, 2014
很多初学者都无法分清这两者之间的区别。我们先看下面的代码:
int *p = NULL;
这时候我们可以通过编译器查看p 的值为0×00000000。这句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是int 类型的数据;在定义变量p 的同时把p 的值设置为0×00000000,而不是把*p 的值设置为0×00000000。这个过程叫做初始化,是在编译的时候进行的。
明白了什么是初始化之后,再看下面的代码:
int *p;
*p = NULL;
同样,我们可以在编译器上调试这两行代码。第一行代码,定义了一个指针变量p,其指向的内存里面保存的是int 类型的数据;但是这时候变量p 本身的值是多少不得而知,也就是说现在变量p 保存的有可能是一个非法的地址。第二行代码,给*p 赋值为NULL,即给p指向的内存赋值为NULL;但是由于p 指向的内存可能是非法的,所以调试的时候编译器可能会报告一个内存访问错误。这样的话,我们可以把上面的代码改写改写,使p 指向一块合法的内存:
int i = 10;
int *p = &i;
*p = NULL;
在编译器上调试一下,我们发现p 指向的内存由原来的10 变为0 了;而p 本身的值, 即内存地址并没有改变。
经过上面的分析,相信你已经明白它们之间的区别了。不过这里还有一个问题需要注意,也就是这个NULL。初学者往往在这里犯错误。
注意NULL 就是NULL,它被宏定义为0:
#define NULL 0
很多系统下除了有NULL外,还有NUL(Visual C++ 6.0 上提示说不认识NUL)。NUL 是ASCII码表的第一个字符,表示的是空字符,其ASCII 码值为0。其值虽然都为0,但表示的意思完全不一样。同样,NULL 和0 表示的意思也完全不一样。一定不要混淆。
另外还有初学者在使用NULL 的时候误写成null 或Null 等。这些都是不正确的,C 语言对大小写十分敏感啊。当然,也确实有系统也定义了null,其意思也与NULL 没有区别,但是你千万不用使用null,这会影响你代码的移植性。

Tags in this post...

面试题 相关文章推荐
Yahoo的PHP面试题
May 26 面试题
C/C++有关内存的思考题
Dec 04 面试题
指针和引用有什么区别
Jan 13 面试题
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
Apr 28 面试题
什么是三层交换,说说和路由的区别在那里
Sep 01 面试题
几个Linux面试题笔试题
Aug 01 面试题
Linux常见面试题
Mar 18 面试题
一些关于MySql加速和优化的面试题
Jan 30 面试题
Ruby如何进行文件操作
Jul 17 面试题
介绍一下Ruby的多线程处理
Feb 01 面试题
DELPHI中如何调用API,可举例说明
Jan 16 面试题
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
Jun 02 #面试题
函数指针的定义是什么
Aug 14 #面试题
一个C/C++编程面试题
Nov 10 #面试题
Sony C++笔试题
Mar 10 #面试题
VC++笔试题
Oct 13 #面试题
写出程序把一个链表中的接点顺序倒排
Apr 28 #面试题
浙大网新C/C++面试解惑
May 27 #面试题
You might like
php 地区分类排序算法
2013/07/01 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
jQuery三级下拉列表导航菜单代码分享
2020/04/15 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
Express之get,pos请求参数的获取
2017/05/02 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
浅谈Node 调试工具入门教程
2018/03/20 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python getpass实现密文实例详解
2019/09/24 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
财务简历的自我评价
2014/03/05 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
2015中学学校工作总结
2015/07/20 职场文书
2016春季运动会前导词
2015/11/25 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
Python中 range | np.arange | np.linspace三者的区别
2022/03/22 Python
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技