gpt4 book ai didi

c++ - 通过指针调用函数

转载 作者:行者123 更新时间:2023-11-30 02:49:10 24 4
gpt4 key购买 nike

这是一个简单的代码

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

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

请注意,您不能像这样递归调用 main,也不能给 main 除了 int main() 之外的任何签名或 int main(int, char**)。 (至少,现代 C++ 就是这种情况;这些规则大概不适用于您的编译器接受的史前方言)。

关于c++ - 通过指针调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21483727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com