if(*a*b) swap(a,b);} 语句前面加*,是对a和b两个指针变量的值得大小做比较(比较的是变量值,而不是变量地址),如果ab为真,则调用swap函数,调用时的把实参a和b(的值)传给形参x1和y1。
创新互联长期为成百上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为下城企业提供专业的网站建设、成都网站建设,下城网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
而在void swap(int*x1,int*x2)中,加了*是表示把x1和x2定义为指针变量,在下面的语句中,起到把X1和X2的值(而不是地址)互换的作用,所以t=*x1; *x1=*x2; *x2=*x1语句中加*.
一般说,加*是表示该变量的值,不加*是表示该变量指向的地址。实参表中是不能加*的。
楼下说的地址传递给swap是错误的,本例函数调用完成的是值的传递,而不是地址的传递。
不用返回了,你这里函数里直接对数组元素进行操作,调用完之后a就是排好的
#includestdio.h
main()
{
int
a[count];
……;
order(a,count);//在这个地方调用排序(地方一)
……
}
void
order(int
a[],int
count)
//数组按从小到大排序
{
int
i,j,x;
for(i=0;icount;i++)
for(j=i+1;jcount;j++)
if(a[i]a[j])
{
x=a[i];
a[i]=wa[j];
a[j]=x;
}
}
for ( int i = 0; i x.Length - 1; i++)
{
int min = i; //假设当前下标为i的数最小
for (int j = i + 1; j x.Length; j++)/*循环找出最小的数的下标是哪个*/
{
if (x[j] x[min])
{
min = j;
}
}
if (min != i) /*如果min在循环中改变了,就需要交换数据*/
{
int t = x[i];
x[i] = x[ min];
x[min] = t;
}
}
}
C程序是从main开始执行的,与上下顺序没什么关系,自定义的子程序只有在使用到的时候才会调用的,至于num1和num2与XY的关系嘛,其实就是变量与参数的关系,order程序要想运行就需要两个参数,就是x和y,就是定义函数时候的那两个,调用程序是必须把这两个参数的值确定了,就是在main里边的num1和num2。