我是一个初学C程序员,想习惯术语和指针。 我在搜索排序数值数组元素的方法时发现了以下工作函数原型。该函数是qsort,它使用指针。现在我所理解的是,“const”这个词确保了值a和b不变,但不是指针。如果我在这里错了,请纠正我。我的问题是:混淆Qsort和指针
- 为什么我们使用
void *
的功能,我们不能用int *
从 开始? - 返回部分 中的工程
*(int*)a
如何工作? 为什么qsort算法需要这么多参数?
int compare (const void *a, const void *b) { return (*(int*)a - *(int*)b); }
非常感谢您的答案。 PS:这对我来说是一项相当复杂的任务。
+1这真的很有帮助。虽然(也包括一个建议:转换为const const *会更合适),但值得澄清'const const限定符在'const void *'中的含义。 – 2013-10-29 22:36:33
第二个星号是要尊重它,然后? – Vesnog
@Vesnog *(int *)a'中的第二个星号是转换为'int *':(变量前面有一个括号中的类型指示符)将该变量转换为该类型,在本例中为指向int ')。然后,第一个星号将取消引用'int *'来获得'int'。 – Kninnug