C语言指针系列3——含野指针+assert

今天我们来继续感受指针的魅力~


野指针

首先我们来了解一下什么叫野指针~

1.定义

       野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定的变量,此时去解引用就是去访问了一个不确定的地址,所以结果是不可知的。(来自百度)

也就是说当一个指针没有初始化或者没有给它一个指定的的变量,那么他就是野指针

2.用代码来演示一下

#include <stdio.h>
int main() {
	int* p;//这是野指针
	int arr[10] = { 0 };
	int* pa = arr[10];//这也是野指针
	printf("%d", *pa);//如果运行,程序会崩,不会出结果
	return 0;
}

3.区别于空指针

这里我们要与空指针做个区分,举个例子 int* p = NULL;  这就是空指针,它是不指向内存的,而野指针则是随机指向内存中的变量地址

以上就是我们第一个部分,接下来进行第二部分~

assret 断言

1.头文件

#include <assret.h>

如果不需要断言那么就在这个头文件之前加上一个定义  #define NDEBUG;

2.用法

assert();

这里括号里面是表达式,表达式为真就无事发生,表达式为假,就会报错,程序不会进行

3.为什么要用它嘞

因为这是特别有效的一种方法来帮你判断你的代码有没有问题,特别直观~


今天指针就说到这里啦,加油!

 预计今天会开始更新JAVA,但是C语言也是要继续更滴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Re.不晚

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

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

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

打赏作者

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

抵扣说明:

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

余额充值