【发布时间】:2014-01-08 23:42:44
【问题描述】:
我知道 C 中的“()”运算符既可以作为括号运算符,也可以作为函数运算符,我的问题是它什么时候会表现为括号,什么时候会表现为函数?比如下面的代码sn -p
float (*ptr)(int)
我们可以这样理解上面的内容,ptr 是一个指向函数的指针,它接受一个 int 作为参数并返回一个浮点数。我的问题是 C 怎么知道以这种方式解释它?
另外,这种说法是否合法:
(*ptr)int --> 我认为 ptr 是一个指向 int 变量的指针
【问题讨论】:
-
它怎么知道如何解释它?因为没有其他方法是有意义的。换句话说,就是语法规定的。
-
您的困惑可能在于您将
()称为操作员。我认为这不是准确的术语。括号只是 C 中的语法。 -
operator()存在于 C++ 中,但它是不同的东西。如果您只想回答 C,请删除 C++ 标签 -
C 没有 C++ 的
operator关键字,但将()函数调用语法视为一个操作符,它接受一个指向-函数操作数和零个或多个作为参数传递的附加操作数。在 ISO C 标准中,函数调用语法在第 6.5.2 节“后缀运算符”中定义。 -
@AyBayBay:别担心。你的问题很好。它甚至得到了赞成票。我们都只是顽固的老脾气;忍受我们。