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;
    }

  • 相关阅读:
    jsp四个域对象
    java,qq邮箱发邮件工具类(需要部分修改)
    Java使用qq邮箱发邮件实现
    JavaScript 高级
    JavaScript基础
    JQuery 高级
    JQuery 基础
    团队最后一次作业:总结
    C++多态
    结对编程
  • 原文地址:https://www.cnblogs.com/kungfupanda/p/2369940.html
Copyright © 2011-2022 走看看