c++ - C++ 函数或函数指针的正确地址是什么
问题描述
typedef int (*fooPtr)(int);
int foo(int a) {
return a + 1;
}
int main(){
void* funcPtr1 = reinterpret_cast<void*>(foo);
void* funcPtr2 = foo;
void* funcPtr3 = &foo;
fooPtr funcPtr4 = foo;
}
在 Visual Studio 的 Watch 窗口中,我得到所有 funcPtr (1-4) 的相同地址,但是当我输入函数名称本身时foo
;我得到一个不同的地址。函数的实际地址是什么foo
。意思是,汇编器最终将运行的实际代码。那么备用地址是什么?
解决方案
推荐阅读
- angular - 如何使用 Flux 和 Angular Observables 使用流
- sql-server - T-SQL-Procedure - Try...Catch 不起作用
- php - PHP DateInterval 错误结果
- javascript - 使用'date-fns'库时如何在React中自动刷新时间
- sql - 为什么我在 SQL 查询中得到无效的列引用?
- algorithm - 哈希表和链接方法
- arrays - 选择记录数组时出现奇怪的错误
- javascript - 如何在 React-Native 的单一选择中选择替代日期日历
- python-3.x - 试图在 Airflow DAG 中引发异常并获得“Broken DAG”
- automation - 使用 Appium 自动化 POS 设备