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

面试题 相关文章推荐
什么是serialVersionUID
Mar 04 面试题
请问如下代码执行后a和b的值分别是什么
May 05 面试题
将一个数的从第5位开始的7个数取出,其余位置0
May 26 面试题
什么是"引用"?申明和使用"引用"要注意哪些问题?
Mar 03 面试题
ddl,dml和dcl的含义
May 08 面试题
.net面试题
Dec 22 面试题
C#实现启动一个进程
Oct 01 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
Sep 18 面试题
外企测试工程师面试题
Feb 01 面试题
Ajax和javascript的区别
Jul 20 面试题
有abstract方法的类一定要用abstract修饰吗
Mar 14 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
Nov 30 面试题
声明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和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php Session存储到Redis的方法
2013/11/04 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python链接Oracle数据库的方法
2015/06/28 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
分享6个隐藏的python功能
2017/12/07 Python
python频繁写入文件时提速的方法
2019/06/26 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
Python随机数函数代码实例解析
2020/02/09 Python
信号生成及DFT的python实现方式
2020/02/25 Python
python 画图 图例自由定义方式
2020/04/17 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
美国儿童运动鞋和服装零售商:Kids Foot Locker
2017/08/05 全球购物
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
校园活动宣传方案
2014/03/28 职场文书
公司合作协议书范本
2014/04/18 职场文书
毕业证代领委托书
2014/09/26 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
银行业务授权委托书
2014/10/10 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
高三毕业评语
2014/12/31 职场文书
2015年大学社团工作总结
2015/04/09 职场文书