所以这是我的代码。
#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]的值正在主函数中发生变化。这是如何运作的?我甚至没有返回已排序的数组。
答案 0 :(得分:4)
你正在传递一个指针;函数声明中的数组衰减为指向其第一个元素的指针。
答案 1 :(得分:0)
int sort(int a[],int n)
{
...
}
即使您使用了a
, []
也是一个指针。您不能在C或C ++中传递数组,而是传递指向第一个元素的指针。