通过函数返回指针的地址

Return address of pointer through function

本文关键字:地址 指针 返回 函数      更新时间:2023-10-16
#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中,指针指针指向双精度。请帮助更正此程序,并告诉我在此程序中犯的错误。

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

如果实际想要传递给函数的指针变量的

地址,则该函数需要接受对正在传递的指针变量的引用。并且,它需要指定正确的返回类型,即指向指针的指针。

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

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

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

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