面对C语言指针的一些困惑

Facing some confusions in pointer in C Language

int* ptr(int, int)int (*ptr)(int, int)有什么区别??
请详细解释一下这里发生的事情。

1.

 int* ptr(int, int)

ptr 是一个函数,它接受两个 int 参数和 returns 指向 int.

的指针

2.

 int (*ptr)(int, int)

ptr 是一个指向函数的指针,该函数接受两个 int 参数和 returns 一个 int.


如果你f.e,后者是有意义的。有几个可用的可选功能,但想通过特定的匹配条件选择一个特定的功能。然后建立一个函数指针数组并选择所需的函数指针。但是请注意,这里的指向函数与第一个示例中的函数有点不同,因为它返回 int,而不是指向 int.

的指针

如果指向的函数应该等同于返回指向 int 的指针的第一种形式,您需要做:

 int* (*ptr)(int, int)

如果你只有一个函数,你不需要通过指针来寻址它,而是使用第一种形式。

如果您想了解有关函数指针的更多信息,这里是 link 一个专门的 SO 问题:

How do function pointers in C work?