关于指针赋初值为NULL的问题

本文深入探讨了指针赋初值为NULL的意义及其在软件工程中的应用。解析了NULL的本质及为何不能访问0地址空间的原因,同时介绍了初始化指针为NULL以避免使用未分配内存的错误实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于指针赋初值为NULL的问题

因为NULL本质就是0,则,一个指针变量的值为0,意味着它指向整个内存的最开始字节处,而这个地方是用户程序(APP)的禁区,不能访问,如果强行访问,则,将被OS禁止并中断这个进程执行(程序被中断)。

上述说法,不能说指针的值不能为NULL,只是说,不能对0编号开始的空间进行“访问”。即,可以令指针指向0编号区域,只要不访问就没有问题。

【软件工程】建议所有的变量(尤其是局部变量)都应该初始化为0(NULL)。这里,对于指针变量初始化为NULL的目的在于:区分垃圾数据!

int *p;

int x;

if(x > 0)

p = (int *)malloc(…);

x = …;

// 在此处,无法识别p是否已经指向一段申请了的空间!

if(p是否指向了有效空间)

此时无法判断p是否指向了有效空间,为此,需要进行如下调整:

int *p = NULL;

int x;

if(x > 0)

p = (int *)malloc(…);

x = …;

if(p == NULL)

// p没有指向有效空间

else

// p指向了有效空间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安安csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值