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

Dár*_*tos 2 c function-pointers function 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;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

您正在寻找的术语是功能指示符.它不是指针类型,但大多数时候,它被转换为一个.

引用C11标准,第6.3.2.1章,(强调我的)

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

相关的,从规范的"函数调用"部分,第6.5.2.2章

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

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