函数的名称。它是指向该函数的指针吗?

时间:2016-12-08 06:03:43

标签: c function function-pointers function-calls

当我们使用函数名来传递参数时,我们是否使用指向该函数的指针?

示例:

int foo(int a, int b);

int main(void)
{
    int a = foo(1,3); //foo() it's a pointer to the function foo()?
    return 0;
}

1 个答案:

答案 0 :(得分:5)

您正在寻找的术语是功能指示符。它不是指针类型,但大多数情况下,转换为一个。

引用C11标准,章节§6.3.2.1,(强调我的

  

函数指示符是具有函数类型的表达式。除非它是   sizeof运算符,_Alignof运算符,65)或一元&运算符的操作数, a   类型''函数返回类型''的函数指示符将转换为类型''指向函数返回类型''的表达式。

相关的,从规范的“函数调用”部分,第6.5.2.2节

  

表示被调用函数92的表达式应具有指向函数的类型指针   返回void或返回除数组类型以外的完整对象类型。

告诉我们,在函数调用中,指示符实际上被转换为指针。