-1

所以这是我的代码。

#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] 的值在主函数中发生了变化。这是如何运作的?我什至没有返回排序后的数组。

4

2 回答 2

4

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

于 2013-04-24T16:08:22.270 回答
0
int sort(int a[],int n)
{
    ...
}

a is a pointer even though you used []. You cannot pass arrays in C or C++, instead a pointer to the first element is passed.

于 2013-04-24T16:10:11.387 回答