考虑以下代码和输出:
#include <iostream>
int Add(int a, int b) {
return a + b;
}
int Subtract(int a, int b) {
return a - b;
}
int main() {
int (*fn1)(int, int);
int (*fn2)(int, int);
fn1 = &Add;
fn2 = &Subtract;
std::cout << "fn1 = " << fn1 << "\n";
std::cout << "*fn1 = " << *fn1 << "\n";
std::cout << "fn2 = " << fn2 << "\n";
std::cout << "*fn2 = " << *fn2 << "\n";
}
输出:
fn1 = 1
*fn1 = 1
fn2 = 1
*fn2 = 1
作为指针,我希望
fn1
和fn2
是内存地址,而我真的不知道对*fn1
和*fn2
会有什么期望。根据Wikipedia,“函数指针指向内存中的可执行代码”,但我看不到“内存中的可执行代码”如何与“ 1”相对应。 最佳答案
*fn1
是一个函数左值,在大多数情况下,包括作为函数调用参数传递时,该值都会衰减为该函数的指针。
您可以取消引用衰减的结果以获取另一个函数左值,无限,分别为*****fn1
,***********fn1
等。
关于c++ - 什么是功能指针指向?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42330078/