函数指针数组_函数指针作为返回值

//第一种实现方式

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

你可能感兴趣的:(函数指针)