这是排序算法的简单实现.我的问题是.该数组numbers
在main中声明并初始化.然后,我像函数中的参数一样传递它sort
(是复制吗?).在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 ++;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
int array[]
是一样的int *array
.你正在传递指针.