zoukankan      html  css  js  c++  java
  • c++指针与引用问题

    本来是回答问题的,到这里做个笔记

    *&L是指针的引用,实参是个指针。所以L是实参指针的别名,对别名L的修改,等于对实参的修改。
    *L是传值,你无法改变传过来的实参指针变量的值
    程序代码:

    #include<iostream>
    using namespace std;
    void foo(int*p);
    int main()
    {
        int a=5;
        int *b=&a;
        printf("%d %d ",b,*b);
        foo(b);
        printf("%d %d",b,*b);
    }
    void foo(int* p)
    {
        *p=*p+1;
        p=p+1;

    }

    输出为


    可以看成指针b没变,指针b保存的值变了
    程序代码:

    #include<iostream>
    using namespace std;
    void foo(int*&p);
    int main()
    {
        int a=5;
        int *b=&a;
        printf("%d %d ",b,*b);
        foo(b);
        printf("%d %d",b,*b);
    }
    void foo(int*& p)
    {
        *p=*p+1;
        p=p+1;

    }

     

    指针b和指针b保存的值都变了
    下面是复制的。
    这种技术很多用在比如定义一个安全删除指针的函数,所谓安全就是,只有当指针为零的时候才执行删除,删除之后,立刻把指针赋值为NULL。
    template<typename T>
    inline safe_delete(T*& ptr)
    {
        if (ptr)
        {
            delete ptr;
            ptr = NULL;
        }
    }
    我用qt和vs中都发现定义的指针都是这种安全指针。
    指针不为零,不让删。删了,如果再NULL也不行。

  • 相关阅读:
    Redis分布式锁解决抢购问题
    Linux查看进程,端口,服务路径等
    执行jar包,输出信息到文件
    查看linux服务器信息
    IDEA将项目打包为指定class文件的jar
    RSA加密-解密以及解决超长内容加密失败解决
    win10 Snipaste 截图软件
    线程池参数详解
    本地连接Linux工具
    python安装
  • 原文地址:https://www.cnblogs.com/dream-for/p/5930865.html
Copyright © 2011-2022 走看看