-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です。関数に渡されたときに、変数の値がメインで変更されることはないと思いました(ポインターを使用しない限り)。コピーしただけで、操作は完了です。しかし、ここでは a[i] の値がメイン関数で変化しています。それはどのように機能しますか?ソートされた配列を返すことすらありません。

4

2 に答える 2

4

ポインターを渡しています。関数宣言内の配列は、最初の要素へのポインターに減衰します。

于 2013-04-24T16:08:22.270 に答える