这是排序算法的简单实现。我的问题是。数组 numbers
在 main 中声明并初始化。然后,我将它作为函数 sort
中的参数传递(是副本吗?)。在 sort
函数中,numbers
(现在称为 array
)(据我所知是一个副本)被更改(已排序)。那么,为什么在调用函数后,数组numbers
发生了变化(这就是我想要的,买想知道为什么??。array
作用域在排序
,而不是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 ++;
}
}
}
}
}
最佳答案
int array[]
与 int *array
相同。您正在传递一个指针。
关于c - 数组在void函数里改了,外面还是改了!为什么? (范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280424/