c - 为什么函数原型(prototype)在不同的函数 block 中?

标签 c prototype

我试图通过 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/

相关文章:

c - 使用免费时下一个尺寸无效

javascript - 扩展 Javascript 对象而不将属性分配给原型(prototype)?

JavaScript 数组反射

javascript - 如何在 Javascript 原型(prototype)中定义重复函数?

javascript - 改进javascript原型(prototype)继承

Javascript 对象自定义函数

c - 显示输入文件中的项目

字符串赋值

c - 打印指向结构体的指针的二维数组

c - 文件中最常见的字母(C 编程)