【问题标题】:c++ function pointer evaluates to 1 [duplicate]c ++函数指针计算为1 [重复]
【发布时间】:2017-08-23 12:57:18
【问题描述】:

我定义了一个指向函数的简单函数指针,当我尝试输出它时,它的值为 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。

【问题讨论】:

  • 您可能忘记通过函数指针调用该函数...添加() 以调用该函数...如果这是您想要的。
  • 你想要指针值还是执行指向的函数并捕获返回值?
  • 你好,我想打印内存空间中函数的地址。
  • 投到void*
  • 你得到 1 的原因是 g++(在 Centos 7、g++ 4.8.5 下测试)编译你的代码以调用 operator

标签: c++ function pointers function-pointers


【解决方案1】:

operator&lt;&lt; 没有重载,它采用 std::ostream 和函数指针。但是,有一个采用std::ostream 和一个bool,并且存在从函数指针到布尔值的隐式转换。

因此,您的代码将函数指针转换为bool,如果它不是空指针,则定义为产生true;然后输出true,默认定义为输出1。你可以通过std::cout&lt;&lt; std::boolalpha &lt;&lt; fcptr; 看到true 的输出。

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 1970-01-01
    • 2018-07-09
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多