31天C语言——9,野指针,空指针

1,未初始化的指针

创建一个指针,但没有赋值。

#include <stdio.h>

int main() {
    
    
	int *a;
	*a = 3;
	return 0;
}

效果:编译器会报错。

在这里插入图片描述

2,操作数组,指针超过了数组长度

指针,但是越界了。
长度为3,却操作了第五个地址。

#include <stdio.h>

int main() {
    
    
	int a[] = {
    
    1, 2, 3};
	int *b = a;
	*(b + 4) = 6;
	printf("%d\n", *(b + 4));
	return 0;
}

效果:报错。

在这里插入图片描述

3,指针存在,数据却已经离开

#include <stdio.h>

int *abc() {
    
    
	int a = 3;
	return &a;
}

int main() {
    
    
	int *a = abc();
	*a = 4;
	printf("%d\n", *a);
	return 0;
}

效果:报错。

在这里插入图片描述

4,空指针

可以给指针赋值NULL,代表空指针。

#include <stdio.h>

int main() {
    
    
	int *a = NULL;
	printf("%d\n", a == NULL);

	int b = 3;
	a = &b;
	printf("%d\n", a == NULL);
	return 0;
}

效果:
一开始是NULL,赋值之后,不再是NULL。

在这里插入图片描述
赋值空,判空,都是比较常用的做法。

猜你喜欢

转载自blog.csdn.net/qq_37284843/article/details/124408669