C++ 通过指针调用函数

C++ 通过指针调用函数,c++,function,pointers,recursion,C++,Function,Pointers,Recursion,下面是一个简单的代码 #include<iostream.h> #include<stdlib.h> #include<conio.h> void (*func[2])(int); void main(int n=1) { int i; cout<<endl<<n; func[0]=&exit; func[1]=&main; i=++n<=10; (func[i])(

下面是一个简单的代码

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
void (*func[2])(int);
void main(int n=1)
{
    int i;
    cout<<endl<<n;
    func[0]=&exit;
    func[1]=&main;
    i=++n<=10;
    (func[i])(n);
}
#包括
#包括
#包括
无效(*func[2])(int);
空干管(int n=1)
{
int i;

cout它不是指针,而是两个指针的数组

这是一个函数:

void func(int);
void (*func)(int);
这是指向函数的指针:

void func(int);
void (*func)(int);
这是一个由两个指向函数的指针组成的数组:

void (*func[2])(int);
因此,如果
i
为零(即
n
大于10),则
func[i]
指向
exit
,否则指向
main
,其中
i
为1


注意,不允许你这样递归调用<代码> main <代码>,也不允许给<代码>主< /代码>除<代码> int()/<代码>或<代码> int main(int,char **)< /> >之外的任何签名(至少,在现代C++中是这样的,这些规则可能不适用于编译器接受的史前方言)。“阅读”可能会帮助您解码它。此外,您应该知道,您的程序在技术上有未定义的行为。C++规范称,<代码>主< /代码>必须定义为返回<代码> int <代码>,不带任何参数或两个参数(<代码> int <代码> >和一个数组>代码> char < /代码>指针)@ JoachimPileborg:这是一个简单的代码,有些谜语,它不符合标准的C++编程规则。我在第一个评论中得到了答案。感谢你的时间和知识。