Tim*_*Tim 15 c kernighan-and-ritchie language-lawyer function-call-operator
我试图理解C语言的一些基础知识.CRC编程语言说
函数调用是一个后缀表达式,称为函数指示符,后跟括号,其中包含可能为空的逗号分隔的赋值表达式列表(Par.A7.17),它们构成函数的参数.
在函数调用中,运算符是什么,操作数是什么?
是()运营商吗?
函数名是操作数吗?
()操作数内的参数是什么?
谢谢.
hac*_*cks 11
在函数调用中,()操作符就像[]访问数组元素时的操作符一样.
6.5.2后缀运算符
Run Code Online (Sandbox Code Playgroud)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 )
Run Code Online (Sandbox Code Playgroud)
这意味着函数名称是"postfix-expression",它( )是实际的运算符.C标准没有提到这个运算符的操作数,但我想你可以将函数名称称为操作数.参数列表不是操作数,而是特殊情况.
函数指示符的定义是(6.3.2.1):
甲功能标志是具有功能类型的表达式.
在表达意义func();,func将是功能标志,但表达作为一个整体将是一个函数调用.所以它不是完全相同的术语.
考虑funcptr_t f = func;涉及函数指示符func但没有函数调用的示例.