这个C指针代码是做什么的?
这是一个指向其中函数返回int,并采取作为参数2字符指针的函数。
的基本规则可以归结为几点: -
有三个简单的步骤如下:
- 与未知元素开始,以螺旋/顺时针方向移动; ecountering以下元素在与对应的英文语句代替它:
[X] or []
- 阵列
X
大小...或数组未定义大小...(type1, type2)
- 函数传递
type1
和type2
回... * - 指针指向...继续以螺旋/顺时针方向执行此操作,直到所有标记都被覆盖。首先解决任何括号内的问题!
- 阵列
参考: 1. Clockwise-rule 2. right-left rule
当你读到C声明你必须阅读他们butrophedonically(古希腊的石头写的常见方式)。
pointer to
function that
has (char*, char*) type parameters as input
and int as output
编辑:
LOL,Upvote for reference –
您粘贴的代码实际上是指向一个功能。该功能的prototype可能是: int cmp (char*, char*);
有三个部分在此函数:返回类型为整数,函数的名称是cmp
并且有两个参数,所有这些都指向一个字符(数组)。具体来说,该函数用于排序,例如,如果第一个参数小于第二个参数,则该函数将返回一个负数,如果相等,则返回零,如果大于则返回一个正数。例如,如果我有以下代码:
char c1 = 'a';
char c2 = 'b';
int result = cmp(&c1, &c2);
然后结果将是一个负数,例如, -1,因为'a'小于'b'。在上面的函数调用中,我在每个参数之前添加了&,因为参数数据类型是指向该字符的指针/引用。 &
是获取变量地址的操作。
关于您提供的代码,实际上在功能cmp
的名称前面还有一个额外的*
。这意味着你想获得整个函数的引用,而不是任何单个变量或数组。例如,下面是功能qsort的在C原型:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
这个函数的第三个参数其实是非常相似的,你所提供的代码。这样做的原因是您可以直接将整个函数传递给另一个函数,例如qsort作为参数。
看看这个link的有关C.
我希望这回答了你的问题指针的细节。
一般来说,我觉得这是一个相当不错的指针解释:http://shop.oreilly.com/product/0636920028000.do – mko
[C函数指针语法](https:// stackoverflow。 com/questions/14114749/c-function-pointer-syntax) – dandan78