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

面试题 相关文章推荐
JPA面试常见问题
Nov 14 面试题
寻找迷宫的一条出路,o通路;X:障碍
Jul 10 面试题
SQL面试题
Dec 09 面试题
开放系统互连参考模型
Jun 29 面试题
Linux的文件类型
Mar 07 面试题
捷科时代的软件测试笔试题
Nov 09 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
Jul 24 面试题
什么是GWT的Entry Point
Aug 16 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
Nov 09 面试题
请用Java实现列出某个目录下的所有文件
Sep 23 面试题
Shell脚本如何向终端输出信息
Apr 25 面试题
声明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
基于mysql的bbs设计(二)
2006/10/09 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php数组键名技巧小结
2015/02/17 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
2017/04/18 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
javascript 内存模型实例详解
2020/04/18 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
python实现下载整个ftp目录的方法
2017/01/17 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
分析Python读取文件时的路径问题
2018/02/11 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
UGG英国官方网站:UGG UK
2018/02/08 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
什么是Web Service?
2012/07/25 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
写好自荐信的要点
2013/11/06 职场文书
会计岗位职责
2013/11/08 职场文书
计算机毕业生求职信
2014/06/10 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
解决SpringBoot跨域的三种方式
2021/06/26 Java/Android
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python