将指针传递给数组作为函数的参数

时间:2013-03-03 04:59:21

标签: c parameter-passing

我正在INSERTION SORT尝试实施C,我认为我已经成功完成了这项工作。但是,我在passing arrays as arguments遇到了问题。

我想进行排序,这意味着传递给insertion_sort函数的原始数组应该包含已排序数组本身的元素。

#include<stdio.h>

int * insertion_sort(int *a,int length)
{
    int j;
    for(j=1;j<length;j++)
    {
        int i,key=a[j];
        for(i=j-1;j>=0;j--)
        {
            if(a[i]<=key)
                break;
            a[i+1]=a[i];
        }  
        a[i+1]=key;
    }

    return *a;
}

int main(void)
{
    int a[]={10,12,7,6,9,8};
    insertion_sort(a,6);
    int i;    
    for(i=0; i<6; i++)
       printf("%d\n", a[i]);

    return 0;
}

修改 输出屏幕中没有打印任何内容。 帮我在这里找到错误。谢谢 !!

1 个答案:

答案 0 :(得分:4)

1.您可能打算在内循环中使用i

变化:

for(i=j-1;j>=0;j--) 
          ^^   ^^

为:

for(i=j-1;i>=0;i--)

2.您不必在原始数组被修改时返回任何内容(这也是因为您忽略了返回的值)。

3.Array index从0开始。将外循环更改为:for(j=0;j<length;j++)