面对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?
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?