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++编程规则。我在第一个评论中得到了答案。感谢你的时间和知识。