これは、ソート アルゴリズムの単純な実装です。私の質問はです。配列numbers
は main で宣言および初期化されます。次に、関数の引数のように渡しますsort
(Is a copy ?)。sort
関数内でnumbers
、現在呼び出されarray
ている (私が知る限り、コピー) が変更 (ソート) されています。では、なぜ、関数を呼び出した後、配列numbers
が変更されるのですか (これは私が望むものです。理由を知りたいのですが??.array
スコープはsort
ではなくmain
です。
int main(void)
{
int numbers[SIZE] = { 4, 15, 16, 50, 8, 23, 42, 108 };
for (int i = 0; i < SIZE; i++)
printf("%d ", numbers[i]);
printf("\n");
sort(numbers, SIZE);
for (int i = 0; i < SIZE; i++)
printf("%d ", numbers[i]);
printf("\n");
return 0;
}
void sort(int array[], int size)
{
int swaps = 0;
while(swaps==0)
{
for(int i = 0; i < size ; i++)
{
for(int j = i + 1; j < size ; j++)
{
if( array[i] > array[j] )
{
// Swapping
int temp = array[i];
array[i] = array[j];
array[j] = temp;
swaps ++;
}
}
}
}
}