我在a coursera lecture分钟1:06刚刚提出了这段代码。它做了什么?
int (*cmp)(char*, char*);
答案 0 :(得分:10)
这是一个指向函数的指针,函数返回一个int并将两个字符指针作为参数。
基本规则归结为以下几点: -
有三个简单的步骤:
[X] or []
X
大小...或数组未定义大小... (type1, type2)
type1
和type2
返回...
* 参考: 1。Clockwise-rule 的 <子> 2。right-left rule 子> 强>
答案 1 :(得分:6)
当你阅读C声明时,你必须阅读它们butrophedonically(古希腊常见的写作方式)。
pointer to
function that
has (char*, char*) type parameters as input
and int as output
编辑:
答案 2 :(得分:1)
您粘贴的代码实际上是指向函数的指针。该函数的prototype可以是:
$images = explode(',',$your query);
<?php foreach ($images as $key => $geth) { ?>
<td><img src="<?php echo base_url()."uploads/hotels/".$geth;?>" width="73" height="53"></td>
<?php } ?>
这个函数有三个部分:返回类型是一个整数,函数的名称是int cmp (char*, char*);
,并且有两个参数,所有这些参数都是一个指向字符(数组)的指针。具体来说,该函数用于排序,例如,如果第一个参数小于第二个参数,则函数将返回负数,如果相等,则返回零,如果更大,则返回正数。例如,如果我有以下代码:
cmp
然后结果将是负数,例如-1,因为&#39; a&#39;小于&#39; b。在上面的函数调用中,我添加了&amp;在每个参数之前,因为参数数据类型是对字符的指针/引用。 char c1 = 'a';
char c2 = 'b';
int result = cmp(&c1, &c2);
是获取变量地址的操作。
关于您提供的代码,在函数&
的名称之前实际上还有一个*
。这意味着您希望获得整个函数的引用,而不是任何单个变量或数组。例如,以下是C:
cmp
此函数的第三个参数实际上与您提供的代码非常相似。这样做的原因是你可以直接将整个函数传递给另一个函数,例如qsort作为参数。
有关C中指针的详细信息,请查看此link。
我希望这能回答你的问题。