请看下面的代码:
#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)
如何在不使用签名中的双指针的情况下实现此功能?
void test(MyType *src)
Run Code Online (Sandbox Code Playgroud)
这里src只是test函数中的局部变量,它是传递给它的指针的副本.分配给局部变量对调用者没有任何影响.
如果要src引用传入的相同变量,请使用引用
void test(MyType *&src)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |