在函数调用中,运算符是什么,操作数是什么?
我试图理解C语言的一些基础知识.CRC编程语言说
函数调用是一个后缀表达式 ,称为函数指示符,后跟括号,其中包含一个可能为空的逗号分隔的赋值表达式列表(Par.A7.17),它们构成函数的参数。
-
在函数调用中,运算符是什么,操作数是什么?
是
()
运营商?函数名是操作数吗?
是
()
操作数内的参数? - 函数指示符是函数调用的同义词吗?
谢谢。
在函数调用中, ()
是一个运算符,就像[]
是访问数组元素时的运算符一样。
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
但没有函数调用。