我看到了这个if
声明,我不确定它是如何工作的,与什么相比较的是什么?是否缺少&&
或||
? parens使我感到困惑。
if ((list->func)((list->head)->dataPointer, newOb) < 0) {
答案 0 :(得分:5)
与什么相比? parens使我感到困惑。
将if(
和)
之间的部分结果与0进行比较,就像在每个if语句中一样。
缺少&amp;&amp;或者||?
我没有看到任何&amp;&amp;或||
parens使我困惑。
(list->func)((list->head)->dataPointer, newOb)
的作用(不一定按此顺序):
list->func
(list->head)->dataPointer
list->func
传递两个参数(list->head)->dataPointer
和newOb
。然后将其结果与0进行比较,因为它是if(
和)
之间的对象。
答案 1 :(得分:0)
好的,所以第一组括号表示该列表是一个指向对象的指针,该对象有一个名为func的成员。 func是一个函数。所以(list-&gt; func)是一个函数调用。该函数显然有两个参数。传入的第一个参数是(list-&gt; head) - &gt; dataPointer。 (list-&gt; head)表示指向列表的指针所指向的对象有一个名为head的成员。 head也是一个指针,它指向一个名为dataPointer的成员。传递给函数的第二个参数(list-&gt; func)是newOb。函数(list-&gt; func)显然返回某种数值,可能是int。
代码可以重写为:
if(list-&gt; func(list-&gt; head-&gt; dataPointer,newOb)&lt; 0)
如果这有助于你了解发生了什么。