• 终于理解二级指针的作用了


    之前学习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
  • 相关阅读:
    BNU Online Judge-29140
    HDU-1022-Train Problem I
    HDU-1312-Red and Black
    BNU Online Judge-34978-汉诺塔
    BNU Online Judge-34976-数细菌
    BNU Online Judge-34973-Liserious战队
    HDU-1010-Tempter of the Bone
    HDU-1518-Square
    thinkphp笔记
    1210. 连号区间数
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10424614.html
Copyright © 2020-2023  润新知