C++ 函数指针的计算结果为 1

标签 c++ function pointers function-pointers

我定义了一个指向函数的简单函数指针,当我尝试输出时,它的计算结果为 1。幕后发生了什么? (我在mac上,使用c++11 g++编译器编译)

#include <iostream>

int foo()
{
    return 5;
}


int main(int argc, char const *argv[])
{
    int (*fcptr)()  = foo;

    std::cout<< fcptr;
    return 0;
}

输出为 1。

最佳答案

operator<< 没有过载这需要 std::ostream和一个函数指针。然而,有一个需要 std::ostream和一个 bool ,并且存在从函数指针到 bool 的隐式转换。

所以你的代码将函数指针转换为 bool ,定义为产生 true如果它不是空指针;然后输出true ,定义为输出1默认情况下。你可以这样做std::cout<< std::boolalpha << fcptr;true输出。

关于C++ 函数指针的计算结果为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45829867/

相关文章:

function - 如何查找内部函数的源代码 - gfortran

function - 如果在数据库中找不到每个输入的特定错误消息

c++ - 从成员指针获取指向封闭实例的指针

CS50 PSET6 : Parse function doesn't change pointers content

c++ - 常量引用和左值

c++ - 如何用刷新内容将现有文件替换到 Assets 文件夹中?

c++ - 使用VC10的C++ std::string问题

c++ - 如何避免使用已知函数参数的 lambda 函数?

arrays - 语言 |将函数作为参数传递给其他函数

C指针地址操作