在C语言中从数组调用函数

在C语言中从数组调用函数,c,C,我试图从数组调用函数Greeting。有人能给我一个提示,或者指导我看一段视频或者在线阅读吗。谢谢 int Greeting() { printf("Hello, World!\n"); return 0; } int process[]={0,0,&Greeting,0,0,0}; int main() { process[2]; return 0; } 您的进程是一个int数组。您需要使它成为一个函数指针数组 int (*process[])(v

我试图从数组调用函数Greeting。有人能给我一个提示,或者指导我看一段视频或者在线阅读吗。谢谢

int Greeting()
{
    printf("Hello, World!\n");
    return 0;
}

int process[]={0,0,&Greeting,0,0,0};

int main()
{
    process[2];
    return 0;
}

您的
进程
是一个
int
数组。您需要使它成为一个函数指针数组

int (*process[])(void) = {0, 0, Greeting, 0, 0, 0};
然后间接调用函数

process[2]();

一个简单的示例,其中首先在结构中创建两个函数指针,然后创建三个函数。使用要调用的函数初始化函数指针,然后传递参数以完成工作

#include <stdio.h>

typedef struct
{
    /* Any function who take two int parameters and returns int can be pointed by this function pointer. */
    int (*function_name)(int a, int b);

    /* This can point to all functions having int argument and void return type */
    void (*print_fn)(int sum);

} FN_GROUP;

int add(int a, int b)
{
    return (a + b);
}

int subtract(int a, int b)
{
    return (a - b);
}

void show(int num)
{
   printf("Result:%d\r\n", num);
}

int main()
{
    int num1 = 20;
    int num2 = 10;
    int result = 0;   
    FN_GROUP group;

    /* Initialize the pointers with add() and show() functions. */    
    group.function_name = &add;
    group.print_fn = &show;

    /* Now call these functions. */
    result = group.function_name(num1, num2);
    group.print_fn(result);

    /* Initialize the pointers with subtract(). */        
    group.function_name = &subtract;

    /* Now call these functions again */
    result = group.function_name(num1, num2);
    group.print_fn(result);

    return (0);
}
#包括
类型定义结构
{
/*任何接受两个int参数并返回int的函数都可以被该函数指针指向*/
int(*函数名称)(int a,int b);
/*这可以指向所有具有int参数和void返回类型的函数*/
无效(*打印内容)(整和);
}FN_组;
整数相加(整数a,整数b)
{
返回(a+b);
}
整数减法(整数a,整数b)
{
返回(a-b);
}
无效显示(整数)
{
printf(“结果:%d\r\n”,num);
}
int main()
{
int num1=20;
int num2=10;
int结果=0;
FN_组;
/*使用add()和show()函数初始化指针。*/
group.function_name=&add;
group.print_fn=&show;
/*现在调用这些函数*/
结果=组.函数名称(num1,num2);
组。打印fn(结果);
/*使用减法()初始化指针。*/
group.function_name=&subtract;
/*现在再次调用这些函数*/
结果=组.函数名称(num1,num2);
组。打印fn(结果);
返回(0);
}

您有一个整数数组。您需要一个函数指针数组,然后才能存储和调用该函数。启用所有编译器警告-它将提供许多提示并节省您的时间。您不需要在
问候语之前使用
&
。函数名衰减为指向函数的指针。