通过指针调用函数

时间:2014-01-31 15:30:01

标签: 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])(n);
}

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

1 个答案:

答案 0 :(得分:3)

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

这是一个功能:

void func(int);

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

void (*func)(int);

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

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

如果func[i]为零(exit大于10),则i指向n,否则指向maini {1}}是1。

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