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
  • 相关阅读:
    postman使用感言
    20. 有效的括号
    13. 罗马数字转整数
    qsort / bsearch
    堆排序(heapsort)
    递归Recursion
    拓扑排序
    N/A的含义
    初级系列17.爱因斯坦的数学题问题
    初级系列16.求车速问题
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10424614.html
Copyright © 2011-2022 走看看