C语言学习鹏哥指针初阶2
野指针
- 成因:指针指向位置不可知的(随机的、不正确的、没有明确限制的)
#include<stdio.h>
int main(){
int *p ;//p是一个局部指针变量,局部变量不初始化的话,默认是随机值
*p=20;
printf("%d",p);
}
- 成因2:越界访问
int arr[10]={0};
int *p=arr;
for(int i = 0;i<=10;i++){
*p = i;
p++; //当i=10时,p指向的位置错误
}
当i=10时,p指向的位置错误
如何规避野指针
- 指针变量初始化
int *p=NULL; 或 int *p=&a ; - 小心指针越界
- 指针指向空间释放及时赋值NULL