C++ 为什么任何函数的指针总是显示一个?
我正在尝试做一些类似的事情C++ 为什么任何函数的指针总是显示一个?,c++,pointers,function-pointers,stack-trace,function-calls,C++,Pointers,Function Pointers,Stack Trace,Function Calls,我正在尝试做一些类似的事情 #include <iostream> using namespace std; void foo () { void (*fooptr) (void) = foo; cout << fooptr << endl; } int main () { void (*fooptr) (void) = foo; foo (); return 0; } #包括 使用名称空间std; void foo(){ 无效(*
#include <iostream>
using namespace std;
void foo () {
void (*fooptr) (void) = foo;
cout << fooptr << endl;
}
int main () {
void (*fooptr) (void) = foo;
foo ();
return 0;
}
#包括
使用名称空间std;
void foo(){
无效(*fooptr)(无效)=foo;
太长了,读不下去了,代码不可能超载:代码> >可能的副本:TL;DR:Case<代码> FoopTr> <代码> >代码> Value*/Cuff>。如果它不工作,那么就不好了…函数指针不是指向函数调用的堆栈框架的指针,而是指向函数转换代码(int)的指针。fooo:为什么值是一?我不知道,但是值总是一样的:正如我说的,这就是函数代码的位置为什么定义了从函数指针到bool的转换?它的目的是什么?@Manu343726:与常规指针一样,如果为null,它将转换为false
,否则将转换为true
,因此您可以编写例如if(fooptr)fooptr();
。
cout << reinterpret_cast<void*>(fooptr) << std::endl;