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

面试题 相关文章推荐
类如何去实现接口
Dec 19 面试题
写一个方法1000的阶乘
Nov 21 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
Oct 03 面试题
威盛公司软件C++工程师笔试题面试题
Jul 16 面试题
解释一下Windows的消息机制
Jan 30 面试题
编写一子程序,将一链表倒序,即使链表表尾变表头,表头变表尾
Feb 10 面试题
简述数组与指针的区别
Jan 02 面试题
一组SQL面试题
Feb 15 面试题
介绍一下Linux内核的排队自旋锁
Jan 04 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
May 20 面试题
Java程序开发中如何应用线程
Mar 03 面试题
关键字throw与throws的用法差异
Nov 22 面试题
声明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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
菜单效果
2006/10/14 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
Python里disconnect UDP套接字的方法
2015/04/23 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
Python类的继承和多态代码详解
2017/12/27 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Python基于template实现字符串替换
2020/11/27 Python
python基于opencv实现人脸识别
2021/01/04 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
美国家居装饰店:Z Gallerie
2020/12/28 全球购物
管理站站长岗位职责
2013/11/27 职场文书
工作自荐信
2013/12/11 职场文书
上学迟到的检讨书
2014/01/11 职场文书
自主招生自荐信格式
2015/03/04 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
vue3不同环境下实现配置代理
2022/05/25 Vue.js