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

面试题 相关文章推荐
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
Java基础知识面试要点
Jul 29 面试题
金智子午JAVA面试题
Sep 04 面试题
简述数据库的设计过程
Jun 22 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
Oct 17 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
Mar 10 面试题
Java基础面试题
Jul 19 面试题
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
May 30 面试题
垃圾回收的优点和原理
May 16 面试题
Java如何获得ResultSet的总行数
Sep 03 面试题
请说出以下代码输出什么
Aug 30 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
声明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
ThinkPHP中html:list标签用法分析
2016/01/09 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
GWT的应用有哪两种部署模式
2012/12/21 面试题
文明之星事迹材料
2014/05/09 职场文书
保安公司服务承诺书
2014/05/28 职场文书
经典导游欢迎词
2015/01/26 职场文书
成本会计岗位职责
2015/02/03 职场文书
介绍信格式样本
2015/05/05 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
九年级化学教学反思
2016/02/22 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
使用 JavaScript 制作页面效果
2021/04/21 Javascript
Nginx利用Logrotate实现日志分割
2022/05/20 Servers
Django中celery的使用项目实例
2022/07/07 Python