双指针用法

Ash*_*iya 1 c++ pointers

请看下面的代码:

#include <stdio.h>
#include <iostream>

using namespace std;
typedef struct MyType{
int num1;
};

void test(MyType **src)
{
 MyType *ret=new MyType;
 ret->num1=666;
 *src=ret;
}

int main(){
 MyType  *mSrc;
 test(&mSrc);
 printf("%d Address\n",mSrc);
 printf("%d Value \n",mSrc->num1);
}
Run Code Online (Sandbox Code Playgroud)

我想知道test()方法是否已经实现如下,为什么调用者看不到test()方法中的指针赋值?

 void test(MyType *src)
    {
     MyType *ret=new MyType;
     ret->num1=666;
     src=ret;     //Why this assignment is only valid inside this method?
    }
Run Code Online (Sandbox Code Playgroud)

如何在不使用签名中的双指针的情况下实现此功能?

nos*_*nos 5

  void test(MyType *src)
Run Code Online (Sandbox Code Playgroud)

这里src只是test函数中的局部变量,它是传递给它的指针的副本.分配给局部变量对调用者没有任何影响.

如果要src引用传入的相同变量,请使用引用

void test(MyType *&src)
Run Code Online (Sandbox Code Playgroud)