c - 如何返回c中函数的指针

标签 c pointers function-pointers void-pointers

float Aco(char** c, int b, char* a) { ...... } float Ma(char** c, int b, char* a) { ...... }

float(*pointer)(char** c, int b, char* a);

?????Funk(int size)
{
 switch (startingLetter)
    {
    case 'a':
        return(&Aco);
        break;
    case 'b':
        return(&Ma);
        break;
    default:
        return NULL;
        break;
   }
}

如果我希望“Funk”返回 NULL 或返回指向函数 Ma/Aco 的指针,我需要写什么而不是 ?????

最佳答案

这应该有帮助:

#include <stdio.h>

typedef double (*div_type)(int, int);

double div(int a, int b) {
    return ((double)a / (double)b);
}
div_type div_fun() {
    return (div);
    // or: return (NULL);
}

int main () {
    div_type fun_ptr = div_fun();
    if (fun_ptr != NULL) {
      printf("%f\n", fun_ptr(4, 2));
    } else {
      puts("Undefined");
    }

    return (0);
}

这将产生

% ./a.out
2.000000

关于c - 如何返回c中函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363627/

相关文章:

c# - 如何从 C# 访问 .h 文件信息

c - 有关 C 语言文件和 I/O 系统调用的基础问题(在 Linux/UNIX 上)

c - snprintf() 在内部调用 memset() 或类似的吗?

c - 在指针上调试 C 程序时出错

c - 指向函数实用程序的指针

c - 如何限制我的 C 代码可访问的内存量?

c - printf 反转字符串时输出错误

转换两个指针(float* 到 int*)

C++指针指向函数指针的指针数组?任何线索如何去做?

c - 函数声明C的区别