zoukankan      html  css  js  c++  java
  • C语言、指针的指针和野指针的问题

    int _tmain(int argc, _TCHAR* argv[])
    {  

       int * p = (int *) malloc(sizeof(int));
       //*p = 10;
       flee(p);
       printf("%d",*p);
       //释放p
       free(p);
       printf("----");

       int * i = (int *) malloc(sizeof(int));
       flee2(&i);
       //释放i
       printf("%d",*i);
       free(i);
    }

    //入参为指针,仍为值传递,即副本。只有引用传递是传递p本身。
    void flee(int *q)
    {
      //副本修改的是指针所指变量的值,而不是指针本身。
      *q = 20;
      //出栈时副本被自动销毁,而外面的P所指变量的值被改了,但指针地址实际上未改变。
    }


    void flee2(int **q)
    {
      //int i = 5;
      ////副本指向了一个新的位置,所以真正地修改了一个指针地址。但产生的一个问题是,原始定义的i产生了野指针。
      //*q = &i;
      //i =3;
    if(q != NULL && *q != NULL)
    {
     *(*q) = 5;
    }

  • 相关阅读:
    Fish
    Brackets
    StoneWall【★★★★★】
    Nesting
    ajax补充FormData
    初始Ajax
    extra过滤
    Django 之缓存
    django中的信号
    Form组件归类
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2369940.html
Copyright © 2011-2022 走看看