📜  int * p()和int(* p)()之间的区别?(1)

📅  最后修改于: 2023-12-03 14:42:07.677000             🧑  作者: Mango

int * p()和int(* p)()之间的区别

在C语言中,指针是非常重要的概念。特别是指向函数的指针,这在高级编程中是非常有用的。本文将介绍C语言中的两种函数指针定义方式:int * p()int(* p)(),以及它们之间的区别。

int * p()

int * p()表示p是一个函数,它无参数并返回一个指向整数的指针。这意味着当使用p时,你可以像使用指针一样使用它,如下所示:

int* (*p)() = some_function;
int* result = (*p)();

在这个例子中,some_function是返回指向整数的指针的一个函数。它被分配给一个指向函数的指针p。然后这个指针被解除引用,调用some_function,最终返回一个指向整数的指针result

int(* p)()

int(* p)()表示p是一个指向函数的指针,该函数无参数并返回整数。这意味着在使用p时,你需要解除指针引用并调用函数,如下所示:

int (*p)() = some_function;
int result = (*p)();

在这个例子中,some_function是返回整数的一个函数。它被分配给一个指向该函数的指针p。然后这个指针被解除引用,并调用some_function,最终返回一个整数result

区别

int * p() 和 int(* p)()之间的区别是指针p指向的函数返回值类型。前者返回指针,后者返回整数。这样,当你使用前者时,你需要用一个指针来接收返回值;而后者一般需要接收整数。

另外,函数名字被定义成指向函数名字的指针(例如,当我们去掉括号和星号时),所以在C中,指向函数指针可以不使用括号提供额外的可读性。

总结

在C语言中,函数指针是一个强大的工具,可以用来实现动态分配的调用和插件。在本文中,我们介绍了int * p()int(* p)()之间的区别。前者返回指向整数的指针,后者返回整数,并分别需要不同的接收方式。理解这些差异对于正确使用函数指针至关重要。