//第一种实现方式
#include <stdio.h>
#define N 3
char *func1_0();
char *(*func1)();
char *(*func2_0())();//返回指向返回值为字符指针的函数的函数指针
char *(*func2_1())();
char *(*func2_2())();
char *(*(*func2[N])())();//函数指针数组
int main(void)
{
func2[0] = func2_0;
func2[1] = func2_1;
func2[2] = func2_2;
for(int i = 0; i < N; i++)
{
func1 = func2[i]();
printf("%s\n", func1());
}
return 0;
}
char *func1_0()
{
return "ssssss";
}
char *(*func2_0())()
{
return func1_0;
}
char *(*func2_1())()
{
return func1_0;
}
char *(*func2_2())()
{
return func1_0;
}
//第二种实现方式
#include <stdio.h>
#define N 3
typedef char *(*func1)();
typedef func1 (*func2)();
char *func1_0();
func1 func2_0();
func1 func2_1();
func1 func2_2();
int main(void)
{
func1 func11;
func2 func[N] = {func2_0, func2_1, func2_2};
for(int i = 0; i < N; i++)
{
func11 = func[i]();
printf("%s\n", func11());
}
return 0;
}
char *func1_0()
{
return "ssssss";
}
func1 func2_0()
{
return func1_0;
}
func1 func2_1()
{
return func1_0;
}
func1 func2_2()
{
return func1_0;
}