zoukankan      html  css  js  c++  java
  • 终于理解二级指针的作用了

    之前学习swap函数时,知道传递指针可以实现对要交换变量本尊的修改,而直接传递值做不到这一点.究其原因,是因为函数传递参数时是以拷贝的形式,因此函数内部对其拷贝进行操作,不会影响到本尊.

    如果想要通过函数实现对一级指针的值进行修改该如何去做呢?如果直接把它传进去,其实修改的是它的拷贝,而对它并没有影响.这个时候就是二级指针出场的时候了.

    #include <string>
    using namespace std;
    
    void A(char ** pStr)
    {
        string s = "aaaaaaaaaa";
        *pStr = new char[s.length() + 1];
        strcpy_s(*pStr, s.length() + 1, s.c_str());
    }
    
    int main() {
        char * res = NULL;
        A(&res);
        printf("%s", res);
        return 0;
    }

    当然也可以通过一级指针的引用来做到同样的效果.

    //指针的引用形式
    #include <string>
    using namespace std;
    
    void A(char *& pStr)
    {
        string s = "aaaaaaaaaa";
        pStr = new char[s.length()+1];
        strcpy_s(pStr, s.length() + 1, s.c_str());
    }
    
    
    int main()
    {
        char * res = NULL;
        A(res);
        printf("%s",res);
        return 0;
    }
    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    设计原则
    git 教程
    git新建分支及提交代码到分支
    DataTemplateSelector介绍
    Semaphore 类 的使用理解C#
    C#中Finalize方法的问题
    WPF原理剖析——路由事件
    WPF自学入门(四)WPF路由事件之自定义路由事件
    路由事件
    commandBinding 的命令
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10424614.html
Copyright © 2011-2022 走看看