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...

面试题 相关文章推荐
如何用PHP实现邮件发送
Dec 26 面试题
weblogic面试题
Mar 07 面试题
C语言面试题
May 19 面试题
C语言如何决定使用那种整数类型
Nov 26 面试题
试述DBMS的主要功能
Nov 13 面试题
关于.NET, HTML的五个问题
Aug 29 面试题
C# .NET面试题
Nov 28 面试题
接口可以包含哪些成员
Sep 30 面试题
四川internet信息高速公路(C#)笔试题
Feb 29 面试题
linux面试题参考答案(4)
Jan 28 面试题
介绍一下Linux中的链接
May 28 面试题
简单叙述一下MYSQL的优化
May 09 面试题
声明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中定义网站根目录的常用方法
2010/08/08 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
javascript 常用功能总结
2012/03/18 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
Django REST 异常处理详解
2020/07/15 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
物业管理计划书
2014/01/10 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
班组长竞聘书
2014/03/31 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年度物流工作总结
2015/04/30 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python