网站编程优秀室内设计作品
#include<stdio.h> //野指针
 int* test()
 {
     int a = 10;
     return &a;
 }
 int main()
 {
     //野指针一:
     int* p;
     *p = 10;    //非法访问内存
     //p没有初始化,就意味着没有明确的指向
     //一个局部变量不初始化的话,放的是随机值:0xcccccccc
 //-----------------------------------------------------------------------
     //野指针二:
     int arr[10] = { 0 };
     int* p = arr;
     int i = 0;
     for (i = 0; i <= 11; i++)
     {
         //当指针指向的范围超出数组arr的范围时,p就是野指针
         *(p++) = i;
     }
// -----------------------------------------------------------------------
     //野指针三:
     int* p = test();
     printf("%d",*p);//10
     //a的地址在自定义函数运行结束后,会将地址的控制权还给系统
     //虽然地址的控制权还给了系统,但其中的数值在没有被覆盖之前会一直存在
     //故可以通过返回的地址找到并读取其中的值
 //------------------------------------------------------------------------
     int* p = NULL;
     //为了减少野指针的形成,暂时不用的指针定义之后可以先赋值为空
     return 0;
 }
