c – 可变长度数组的原型

我正在尝试编写一个在c中采用可变大小数组的函数.
void sort(int s,int e,int arr[*]){
    ...
}

它表示对于可变长度数组,它需要在函数声明中有界.那是什么意思?我正在使用xcode 4.0,使用LLVM编译器2.0.

谢谢您的帮助.

解决方法

如果您没有使用C99可变长度数组,通常的解决方案是传入指向第一个元素的指针,以及要用于访问元素的任何索引.

这是一段打印出一系列数组的代码,类似于您尝试对其进行排序的代码.

#include <stdio.h>

static void fn (int *arr,size_t start,size_t end) {
    size_t idx;
    for (idx = start; idx <= end; idx++) {
        printf ("%d ",arr[idx]);
    }
    putchar ('\n');
}

int main (void) {
    int my_array[] = {9,8,7,6,5,4,3,2,1,0};
    fn (my_array,6);
    return 0;
}

这将输出4到6个元素(从零开始),给出:

5 4 3

有几点需要注意.

>在该函数中使用my_array调用fn会自动将数组“衰减”为指向其第一个元素的指针.当您使用数组时,这实际上发生在大多数(并非所有)情况下,因此您不必显式声明&(my_array [0]).> C已经在标准库中内置了一个非常好的排序函数,称为qsort.在许多情况下,这就是你应该使用的东西(除非你有一个特定的算法要用于排序,或者你正在做家庭作业/自学教育).

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...