通过指针调用函数

Calling function via pointer

本文关键字:函数 调用 指针      更新时间:2023-10-16

这是一个简单的代码

#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);
}

在这里,我对输出感到满意(即不同行中的 1 到 10)。 唯一让我感到困惑的是,为什么全局指针的类型是 void (*ptr[2])(int)。如果可能的话,请用简单的文字解释为什么这个指针被如此具体地采用

它不是一个指针,它是一个由两个指针组成的数组。

这是一个函数:

void func(int);

这是一个指向函数的指针:

void (*func)(int);

这是一个包含两个指向函数的指针的数组:

void (*func[2])(int);

因此,如果i为零(即n大于 10),则func[i]指向exit,否则main指向i为 1。

请注意,您不能像这样递归地调用main,也不允许给mainint main()int main(int, char**)以外的任何签名。(至少,现代C++是这样;这些规则可能不适用于编译器接受的史前方言)。