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也不行。

  • 相关阅读:
    【C3】04 工作原理
    【C3】03 如何构建
    【C3】02 操作总览
    【C3】01 概述
    【H5】16 表单 其五 表单验证
    【H5】15 表单 其四 数据发送
    【H5】14 表单 其三 原生表单部件
    【H5】13 表单 其二 如何构造
    【H5】12 表单 其一 第一个表单
    【H5】11 表格
  • 原文地址:https://www.cnblogs.com/dream-for/p/5930865.html
Copyright © 2011-2022 走看看