c++定义指针函数(即返回值为指针的函数),分别取得全局变量、局部变量、新分配的堆内存空间的地址,访问这些地址
时间: 2025-01-14 07:18:54 浏览: 49
在C++中,定义一个返回指针的函数(即指针函数)是非常常见的操作。我们可以通过这种函数来返回全局变量、局部变量以及动态分配的内存空间的地址。以下是一个示例代码,展示了如何实现这一点:
```cpp
#include <iostream>
#include <new>
// 全局变量
int globalVar = 10;
// 指针函数:返回全局变量的地址
int* getGlobalVarAddress() {
return &globalVar;
}
// 指针函数:返回局部变量的地址
int* getLocalVarAddress() {
int localVar = 20;
return &localVar; // 不推荐这样做,因为局部变量在函数返回后会被销毁
}
// 指针函数:返回动态分配的内存空间的地址
int* getDynamicVarAddress() {
int* dynamicVar = new int(30);
return dynamicVar;
}
int main() {
// 访问全局变量的地址
int* ptrGlobal = getGlobalVarAddress();
std::cout << "全局变量的值: " << *ptrGlobal << std::endl;
// 访问局部变量的地址(不推荐)
int* ptrLocal = getLocalVarAddress();
std::cout << "局部变量的值: " << *ptrLocal << std::endl; // 未定义行为
// 访问动态分配的内存空间的地址
int* ptrDynamic = getDynamicVarAddress();
std::cout << "动态分配内存的值: " << *ptrDynamic << std::endl;
// 释放动态分配的内存
delete ptrDynamic;
return 0;
}
```
在这个示例中,我们定义了一个全局变量 `globalVar`,并创建了三个函数来返回不同类型变量的地址:
1. `getGlobalVarAddress` 返回全局变量的地址。
2. `getLocalVarAddress` 返回局部变量的地址(不推荐这样做,因为局部变量在函数返回后会被销毁,导致悬挂指针)。
3. `getDynamicVarAddress` 返回动态分配的内存空间的地址。
在 `main` 函数中,我们分别调用这些函数并访问返回的地址中的值。需要注意的是,访问局部变量的地址会导致未定义行为,因为局部变量在函数返回后会被销毁。
阅读全文
相关推荐


















