通过函数返回指针的地址
Return address of pointer through function
#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;
}
相关文章:
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 将地址分配给本地指针后,公共对象的变量将消失
- 为什么指针不写入类的地址?
- CUDA:统一内存和指针地址的更改
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 当我在 C++ 中将派生类的指针分配给指针时,地址会更改
- 是否可以仅通过将分配的指针地址存储在C++中来分析内存?
- 如何在程序集函数中将元素数组作为参数传递时转发 ARM 寄存器的地址指针
- 如何使用构造函数初始化内存地址(指针变量)?
- 数组基础地址指针
- 如何在不使用返回的情况下从函数获取变量的地址(指针)
- 保存QWidgets的地址/指针
- C++ 读取内存地址/指针和偏移量
- 从存储在 CTreeCtrl 的 LPARAM 中的结构中检索地址/指针 (IXMLDOMNode*) - 不起作用
- 简单的C++地址/指针澄清
- 如何获取成员函数的地址指针
- 当“按引用传递”成为强制传递而不是按地址/指针传递时
- C++ 为什么不是同一个地址(指针)