我正在尝试理解C. KRC的C编程语言的一些基础知识
函数调用是一个后缀表达式,称为函数指示符,后跟括号,其中包含一个可能为空的逗号分隔的赋值表达式列表(Par.A7.17), 它构成了函数的参数。
在函数调用中,运算符是什么,操作数是什么?
()
是运营商吗?
函数名是操作数吗?
()
操作数内的参数是什么?
感谢。
答案 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
,但没有函数调用。