鱼C论坛

 找回密码
 立即注册
查看: 4430|回复: 7

[已解决]while(p)和while(p!=NULL)一样吗

[复制链接]
发表于 2018-7-25 22:44:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题

感谢各位大神指导!
最佳答案
2018-7-25 23:21:43
在创建一个p时,没有写p=NULL的话,p会有个随机的值,
int main()
{
        int a;
        int *p;
        p=(int*)0x00;
        //p=&a;
        while(p!=NULL)
        {
                printf("<<<<<<<<<<<<<<<<<<<<");
        }
}
这个代码说明
p=0x00跟p=NULL;等价
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 22:47:20 From FishC Mobile | 显示全部楼层
是不是前者存在 p指向0x00的情况?然后导致程序误判为空?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 23:21:43 | 显示全部楼层    本楼为最佳答案   
在创建一个p时,没有写p=NULL的话,p会有个随机的值,
int main()
{
        int a;
        int *p;
        p=(int*)0x00;
        //p=&a;
        while(p!=NULL)
        {
                printf("<<<<<<<<<<<<<<<<<<<<");
        }
}
这个代码说明
p=0x00跟p=NULL;等价
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-25 23:24:40 | 显示全部楼层

是一样。
一模一样的意思。

        int *p=NULL; // 就意味着p == 0x00

写代码调试一下什么都清楚了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 00:57:26 | 显示全部楼层
看下NULL的定义的话,你可能就理解了:
#define NULL (void*)0
所以呢,其实,NULL是个宏定义,是一个指向地址0的通用指针,小甲鱼课堂上专门讲到过的。

评分

参与人数 1贡献 +3 收起 理由
仓鼠爱跑圈 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-26 01:02:36 | 显示全部楼层
哦,还有个问题,上条回复被审核了,只能再来一楼了。
你这个while(p)和 while(p!= NULL),从可读性的角度来说,前提是p要是个指针,然后与NULL比较才有意义,因为NULL实际是个指向0x0000的通用指针,否则一个整数和NULL比较,虽说或许能执行,但有点费解了就。
那么,如果是指针的话,只要p的值不为0.while语句就会执行,NULL的值也等同于0,所以其实是一样的啦。

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 -2 收起 理由
仓鼠爱跑圈 + 1 + 1 -2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-26 07:39:28 From FishC Mobile | 显示全部楼层
因为二级题库判我错了,下次写全吧,谢谢各位。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-26 10:49:31 From FishC Mobile | 显示全部楼层
TyCk 发表于 2018-7-26 00:57
看下NULL的定义的话,你可能就理解了:

所以呢,其实,NULL是个宏定义,是一个指向地址0的通用指针,小 ...

sorry不小心点成了扣分 给你加回来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 02:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表