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

Tim*_*Tim 15 c kernighan-and-ritchie language-lawyer function-call-operator

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

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

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

    ()运营商吗?

    函数名是操作数吗?

    ()操作数内的参数是什么?

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

谢谢.

hac*_*cks 11

在函数调用中,()操作符就像[]访问数组元素时的操作符一样.

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  
Run Code Online (Sandbox Code Playgroud)

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

()操作数内的参数是什么?

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

  • 正式的语法定义绝对是初学者最需要的:) (3认同)
  • *operand*本质上是*argument*的同义词. - *[操作数,然后,也称为"操作的输入(数量)之一".](https://en.wikipedia.org/wiki/Operand)* (2认同)

Lun*_*din 5

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

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

语法是(6.5.2):

postfix-expression ( argument-expression-listopt )
Run Code Online (Sandbox Code Playgroud)

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


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

功能标志是具有功能类型的表达式.

在表达意义func();,func将是功能标志,但表达作为一个整体将是一个函数调用.所以它不是完全相同的术语.

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

  • 顺便说一句,知道这些东西对于没有编写编译器的人来说几乎是无用的知识. (3认同)