通过函数的返回指针的地址

问题描述 投票:-5回答:2
#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这是一个指向双。请帮助解决这个程序,并告诉我,这是我在这个节目做了错误。

c++
2个回答
1
投票

由于函数参数基本上是一个初始化局部变量,返回其地址是非生产性如果变量是一个对象。该对象已不存在的函数返回的时候,所以地址本身也是无效的。

如果你真的想传递给函数指针变量的地址,该功能需要接受被传递给指针变量的引用。而且,它需要指定正确的返回类型,这是一个指针的指针。

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

您的代码不应该编译,而你的编译器应该发出诊断说是无效的转换。


1
投票

&p2返回p2的地址的操作。 p2int一个指针。因此,功能pointer应该返回int **而不是int &

int **pointer(int *p2) {
       p2=&teradata;
       return &p2;
}
© www.soinside.com 2019 - 2024. All rights reserved.