gpt4 book ai didi

c++ - 函数指针指向什么?

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:25 25 4
gpt4 key购买 nike

考虑以下代码和输出:

#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

作为指针,我希望 fn1fn2成为内存地址,我真的不知道 *fn1 会发生什么和 *fn2 .根据Wikipedia ,“函数指针指向内存中的可执行代码”,但我没有看到“内存中的可执行代码”如何与“1”对应。

最佳答案

*fn1 是一个函数左值,在大多数情况下,这样的值会衰减为指向该函数的指针,包括作为函数调用参数传递时。

您可以取消引用衰减的结果以获得另一个函数左值,无穷无尽:*****fn1, ************fn1

关于c++ - 函数指针指向什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com