在函数调用中,运算符是什么,操作数是什么?

我试图理解C语言的一些基础知识.CRC编程语言说

函数调用是一个后缀表达式 ,称为函数指示符,后跟括号,其中包含一个可能为空的逗号分隔的赋值表达式列表(Par.A7.17),它们构成函数的参数。

  1. 在函数调用中,运算符是什么,操作数是什么?

    ()运营商?

    函数名是操作数吗?

    ()操作数内的参数?

  2. 函数指示符是函数调用的同义词吗?

谢谢。

在函数调用中, ()是一个运算符,就像[]是访问数组元素时的运算符一样。

6.5.2后缀运算符

 Syntax 1 postfix-expression: primary-expression postfix-expression [ expression ] postfix-expression ( argument-expression-listopt ) postfix-expression . identifier postfix-expression -> identifier postfix-expression ++ postfix-expression -- ( type-name ) { initializer-list } ( type-name ) { initializer-list , } argument-expression-list: assignment-expression argument-expression-list , assignment-expression 

此运算符的操作数是函数名称(或指向函数的指针)。

()操作数内的参数?

否。根据C标准,表达式列表指定函数的参数。

C标准中的文本几乎相同,6.5.2.2:

后缀表达式后跟包含可能为空的逗号分隔表达式列表的括号()是函数调用。 后缀表达式表示被调用的函数。 表达式列表指定函数的参数。

语法是(6.5.2):

 postfix-expression ( argument-expression-listopt ) 

这意味着函数名称是“postfix-expression”,而( )是实际的运算符。 C标准没有提到这个运算符的操作数,但我想你可以将函数名称称为操作数。 参数列表不是操作数,而是特殊情况。


函数指示符的定义是(6.3.2.1):

函数指示符是具有函数类型的表达式。

表达式func();中的含义func();func将是函数指示符,但整个表达式将是函数调用。 所以它不是完全相同的术语。

考虑示例funcptr_t f = func; 它涉及函数指示符func但没有函数调用。