函数排序数组没有传递指针

时间:2013-04-24 16:06:06

标签: c function sorting

所以这是我的代码。

#include<stdio.h>
 int main()
 {
  int a[4]={6,2,7,3};
  sort(a,4);
  int i;
  for(i=0;i<4;i++)
  printf("%d",a[i]);
 }
  int sort(int a[],int n)
  {
   int i,j,temp;
   for (i=0; i< (n -1); i++)
   {
    for(j = (i+1); j < n; j++)
    {
     if (a[i]< a[j])
     {
       temp= a[i];
       a[i] = a[j];
       a[j] = temp;
     }
    }
   }
  }

,输出为7632。 我认为传递给函数时,main中的变量值永远不会改变(除非使用指针)。它只是复印,操作完成。但是这里a [i]的值正在主函数中发生变化。这是如何运作的?我甚至没有返回已排序的数组。

2 个答案:

答案 0 :(得分:4)

你正在传递一个指针;函数声明中的数组衰减为指向其第一个元素的指针。

答案 1 :(得分:0)

int sort(int a[],int n)
{
    ...
}
即使您使用了a

[]也是一个指针。您不能在C或C ++中传递数组,而是传递指向第一个元素的指针。