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
  • 相关阅读:
    平面点集最佳平面
    快速变幻AABB的顶点
    惯性坐标系
    Grapher
    Grapher
    射线到直线方程的转换
    两个运动球的相交性测试
    射线和球的相交性
    Glow Shader
    Shder中实现TintColor
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10424614.html
Copyright © 2011-2022 走看看