我试图通过 K&R 来理解 C。我无法理解书中两个函数的这段代码:
void qsort(int v[], int left, int right){
int i, last;
void swap(int v[], int i, int j);
if (left >= right)
return;
swap(v, left, (left+right)/2);
last = left;
for ( i = left+1; i<=right; i++)
if (v[i]<v[left])
swap(v,++last, i);
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
void swap(int v[], int i, int j){
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
这两个函数对给定数组执行快速排序。在主函数中,我创建了一个 int 数组并调用了 qsort。它编译良好,运行良好。我的问题是,为什么 swap() 的原型(prototype)放在函数 qsort() 中而不是放在 main() 之前?
最佳答案
原型(prototype)应该在第一次使用实际功能之前添加。
在这种情况下,我不认为在 qsort()
函数中使用原型(prototype)是一种普遍的做法,但是,它仍然可以达到目的。 swap()
的原型(prototype)也可以添加到 main()
之前,不要认为这会有什么不同。
关于c - 为什么函数原型(prototype)在不同的函数 block 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5029672/