c – 可变长度数组的原型

前端之家收集整理的这篇文章主要介绍了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&C++相关文章