通过函数返回指针的地址

时间:2019-02-05 08:35:34

标签: c++

#include<iostream>

using namespace std;

int teradata=65;

int &pointer(int *p2)
{
       p2=&teradata;
       return &p2;
}

int main()
{
       int a=10;
       int *p=&a;
       int **p3;
       p3=pointer(p);
       cout<<p3;    
       return 0;
}

实际上,我正在尝试返回指针p2的地址并将其存储在指针p3中,该指针是一个指向double的指针。请帮助纠正该程序,并告诉我在此程序中所做的错误。

2 个答案:

答案 0 :(得分:1)

操作&p2返回p2的地址。 p2是指向int的指针。因此,函数pointer应该返回int **而不是int &

int **pointer(int *p2) {
       p2=&teradata;
       return &p2;
}

答案 1 :(得分:1)

由于函数参数基本上是初始化的局部变量,因此如果变量是对象,则返回其地址将毫无用处。函数返回时该对象不再存在,因此地址本身也无效。

如果您实际上想要传递给该函数的指针变量的地址,则该函数需要接受对传递的指针变量的引用。而且,它需要指定正确的返回类型,这是指向指针的指针。

int **pointer(int *&p2) {
       p2=&teradata;
       return &p2;
}

您的代码不应该编译,并且您的编译器应该发出有关无效转换的诊断。