使用函数指针获取函数地址,通过&func或func得到入口地址,用于调用、参数传递等;声明形式为返回类型(*指针名)(参数列表),可实现回调、策略模式和函数表;注意不能取临时函数或非静态成员函数的普通指针,重载函数需明确指定版本。

在C++中获取函数的地址,本质上就是使用函数指针。函数指针指向函数的入口地址,可以用来调用函数,也可以作为参数传递、存储在数组中等。
获取函数地址非常简单,只需要使用取地址符 & 作用于函数名即可。不过,对于普通函数,函数名本身在大多数上下文中会自动转换为函数指针,所以 &func 和 func 效果相同(推荐显式使用 & 提高可读性)。
示例:
定义一个普通函数并获取其地址:
立即学习“C++免费学习笔记(深入)”;
#include <iostream>
void sayHello() {
std::cout << "Hello, world!" << std::endl;
}
int main() {
void (*funcPtr)() = &sayHello; // 获取函数地址并赋值给函数指针
funcPtr(); // 调用函数
return 0;
}
上面代码中,void (*)() 是一个指向无参数、无返回值函数的指针类型,&sayHello 就是该函数的地址。
函数指针的声明格式为:
返回类型 (*指针名)(参数列表)
常见例子:
实际应用:
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int (*operation)(int, int);
operation = &add; // 指向 add 函数
std::cout << operation(3, 4) << std::endl; // 输出 7
operation = ⊂ // 指向 sub 函数
std::cout << operation(5, 2) << std::endl; // 输出 3
函数指针在以下场景中非常有用:
示例:函数指针数组
int op_add(int a, int b) { return a + b; }
int op_sub(int a, int b) { return a - b; }
int (*funcs[2])(int, int) = {&op_add, &op_sub};
// 调用第一个函数
int result = funcs[0](10, 5); // result = 15
基本上就这些。掌握函数指针有助于理解底层调用机制和写出更灵活的C++代码。
以上就是c++++怎么获取函数的地址_函数指针与地址获取的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号