当我们使用函数名来传递参数时,我们是否使用指向该函数的指针?
示例:
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;
}
答案 0 :(得分:5)
您正在寻找的术语是功能指示符。它不是指针类型,但大多数情况下,转换为一个。
引用C11
标准,章节§6.3.2.1,(强调我的)
函数指示符是具有函数类型的表达式。除非它是
sizeof
运算符,_Alignof
运算符,65)或一元&
运算符的操作数, a 类型''函数返回类型''的函数指示符将转换为类型''指向函数返回类型''的表达式。
相关的,从规范的“函数调用”部分,第6.5.2.2节
表示被调用函数92的表达式应具有指向函数的类型指针 返回void或返回除数组类型以外的完整对象类型。
告诉我们,在函数调用中,指示符实际上被转换为指针。