品牌营销的成功案例:一道C语言题目,请高手帮个忙,急用!!!!

来源:百度文库 编辑:高考问答 时间:2024/05/04 16:31:50
swap(int *p1, int *p2)
{ int p;
p=*p1;
*p1=*p2;
*p2=p;
}
main()
{ int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a; pointer_2=&b;
if(a<b)swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}

1. if(a<b)swap(pointer_1,pointer_2)这句中为什麽传地址?为什莫不是swap(*pointer_1,*pointer_2)
2. 函数为什麽不这样定义 swap(int x, int y)?
请详细说明,谢

1 swap函数的两个参数是指针类型,不是普通的int类型。
注意函数定义中的*是说明参数是指针。
2 如果这样定义,函数调用无效。
你要知道函数会新开辟空间存储x,y,它们的变动不影响实际参数的值。
函数分为值传递和地址传递,本问题中必须用地址传递。(上面那个人回答完全不对)

从你的问题可以看出你对指针理解非常不好,需要认真把书学好,再做这个题目。

1。因为swap函数的变量是指针的地址,所以调用函数的时候应提供的是变量的地址,而不是指针所指单元的所存储的数。
2。这里完全可以不用指针,用swap(int x, int y)完全可以,估计是为了解释怎么用指针才这样做的。