#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;
}