c ++指针类型和按引用调用

时间:2014-11-12 16:50:33

标签: c++ pointers pass-by-reference

编写程序时,指针类型有问题。 代码如下所示:

datatype B;
int func(datatype* A){
 A=&B;
};
int main(int argc,char** argv){
 dataType* mainA=new dataType;
 func(mainA);
}

在切换func(mainA)之后我想要的是什么。 mainA指向B.我知道我的代码错了,之后,mainA没有改变。我认为这应该是一种叫做引用调用的东西。任何人都可以帮我解决这个问题吗?

非常感谢。

2 个答案:

答案 0 :(得分:3)

您可以将参数作为指针的引用。最后,指针也是一个对象,可以通过引用进行修改。

int func(datatype*& A)
{
    A = &B;
}

但是,我更愿意返回结果并指定它:

datatype* func()
{
    return &B;
}

// […]

dataType* mainA = func();

答案 1 :(得分:1)

您必须将A参数声明为对指针的引用:

int func(datatype *&A){

现在指针本身将通过引用传递,因此如果您将其传递,func()将被允许更改mainA