Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个C指针代码做什么?_C_Pointers - Fatal编程技术网

这个C指针代码做什么?

这个C指针代码做什么?,c,pointers,C,Pointers,我刚在2007年1月6日1:06分提出这个密码。它有什么作用 int (*cmp)(char*, char*); 这是一个指向函数的指针,函数返回一个int并将两个字符指针作为参数。 基本规则归结为几件事:- 以下是三个简单的步骤: 从未知元素开始,以螺旋/顺时针方向移动;当计算下列元素时,用相应的英语语句替换它们:[X]或[] 数组X的大小。。。或数组未定义的大小…(类型1,类型2) 函数传递type1和type2返回。。。 * 指向…的指针。。。继续以螺旋/顺时针方向进行此操作,直到所

我刚在2007年1月6日1:06分提出这个密码。它有什么作用

int (*cmp)(char*, char*);

这是一个指向函数的指针,函数返回一个int并将两个字符指针作为参数。


基本规则归结为几件事:-

以下是三个简单的步骤:

  • 从未知元素开始,以螺旋/顺时针方向移动;当计算下列元素时,用相应的英语语句替换它们:
    [X]或[]
  • 数组
    X
    的大小。。。或数组未定义的大小…
    (类型1,类型2)
  • 函数传递
    type1
    type2
    返回。。。 *
  • 指向…的指针。。。继续以螺旋/顺时针方向进行此操作,直到所有代币都被覆盖。总是先解决括号中的任何问题
参考资料:1.
2.

当你阅读C声明时,你必须阅读它们(古希腊常用的石头书写方式)


编辑:

粘贴的代码实际上是指向函数的指针。该功能的主要功能可以是:
intcmp(char*,char*)

该函数包含三个部分:返回类型为整数,函数名为
cmp
,有两个参数,都是指向字符(数组)的指针。具体来说,函数用于排序,例如,如果第一个参数小于第二个参数,函数将返回负数,如果相等,则返回零,如果更大,则返回正数。例如,如果我有以下代码:

char c1 = 'a';
char c2 = 'b';
int result = cmp(&c1, &c2);
然后结果将是一个负数,例如-1,因为“a”小于“b”。在上面的函数调用中,我在每个参数之前添加了&因为参数数据类型是指向字符的指针/引用<代码>&
是获取变量地址的操作

关于您提供的代码,实际上在函数名
cmp
之前还有一个额外的
*
。这意味着您希望获取整个函数的引用,而不是任何单个变量或数组。例如,以下是C中函数的原型:

void qsort(void*base,size\u t nitems,size\u t size,int(*compar)(常量void*,常量void*))

这个函数的第三个参数实际上与您提供的代码非常相似。这样做的原因是您可以直接将整个函数作为参数传递给另一个函数,例如qsort

看看这篇文章,了解C中指针的详细信息


我希望这能回答您的问题。

总的来说,我觉得这是对指针的一个很好的解释:指针可能重复
char c1 = 'a';
char c2 = 'b';
int result = cmp(&c1, &c2);