c - int * ( * ) ( int * ) 这个类型在c语言中代表什么?

标签 c pointers function-pointers

谁能解释一下这个类型在C语言中的int * (*) (int *)到底是什么意思?

谢谢,

最佳答案

除非 int 定义为宏,否则 int * (*) (int *) 既不包含任何常量也不包含任何标识符,因此它不能是表达式。相反,它是一种类型。具体来说,它是一种指向函数的指针类型,该函数接受一个类型为 int * 的参数,并返回一个类型为 int * 的值。例如,它与指向此函数的指针兼容:

int *foo(int *x) {
    return x + 1;
}

您可以在类型转换表达式中使用它,例如在这个人为的示例中:

int *(*p)() = foo;
int *(*p2)(int *) = (int * (*)(int *)) p;
// here ------------^^^^^^^^^^^^^^^^^^

关于c - int * ( * ) ( int * ) 这个类型在c语言中代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917491/

相关文章:

c - 如何阻止 GCC 将此逐字节复制优化为 memcpy 调用?

c - 无效的初始化程序 : While assigning value from struct to a struct array

c - C 中的字符串与指针连接

c - & 运算符在函数指针赋值中可选

c - ptrace mprotect调试麻烦

c - Postgresql C 如何将 uint64_t 转换为数字?

c++ - 指针转换取消引用的指针有什么用?

c - 链表的头节点被传递给另一个函数,它被分配给函数中的本地节点。为什么没有错误?

c - 学习集 : How do I place the asterisks and ampersands on function arguments and function calls?

c - 我不知道错误是什么