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

时间:2017-08-10 13:56:41

标签: c language-lawyer kernighan-and-ritchie function-call-operator

我正在尝试理解C. KRC的C编程语言的一些基础知识

  

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

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

    ()是运营商吗?

    函数名是操作数吗?

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

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

2 个答案:

答案 0 :(得分:11)

在函数调用中,<p id="p1"> ...here is a lot of text (html) mixed with php... </p> <button onclick="copyToClipboard('#p1')">Copy to clipboard</button> ------ JS function copyToClipboard(element) { var $temp = $("<input>"); $("body").append($temp); $temp.val($(element).text()).select(); document.execCommand("copy"); $temp.remove(); } 是一个运算符,就像访问数组元素时()是一个运算符一样。

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标准,表达式列表指定函数的参数。

答案 1 :(得分:5)

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

  

后缀表达式后跟包含可能的括号()   空的,以逗号分隔的表达式列表是一个函数调用。该   后缀表达式表示被调用的函数。清单   expressions指定函数的参数。

语法为(6.5.2):

postfix-expression ( argument-expression-listopt )

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

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

  

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

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

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