1.野指针
1.1 野指针的概念:指针指向的位置是不可知的(随机的,不正确,没有明确限制的)
1.2野指针的成因:(1)指针未初始化
int main()
{
int* p;//局部指针没有初始化,指向的位置为随机值
*p = 20;
return 0;
}
如何避免:初始化指针,如果不知道指针的地址,就给它一个空指针(NULL)
(2)指针越界访问
int main()
{
int arr[10] = { 0 };
int* p = arr;
for (int i = 0; i <= 11; i++)
{
printf("%d\n", *(p + i));//此时指针越界了两次,就会出现两次随机打印
}
return 0;
}
如何避免:不要超过指针的范围,在有效范围内使用指针
1.3 指针指向的空间被释放了
int* test()
{
int n = 100;
return &n;
}
int main()
{
int* p = test();
printf("%d", *p);
return 0;
}