本帖最后由 浩宇 于 2012-3-10 00:38 编辑
【例10.4】请注意,不能企图通过改变指针形参的值而使指针实参的值改变。 swap(int *p1,int *p2) //为什么这个函数不能实现a,b 的交换啊? {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",*pointer_1,*pointer_2); } 其实我想问的是一下的题目对比,同样的目的,得不到同样的结果; #if(1)
#include <stdio.h> void main()
{
int *p1, *p2, *p;
int a, b; scanf("%d %d", &a, &b); p1 = &a;
p2 = &b; if(a<b)
{
p = p1;
p1 = p2;
p2 = p;
} printf("\na=%d, b=%d\n", a, b);
printf("max=%d, min=%d\n", *p1, *p2);
}
#endif
#if(0)
#include <stdio.h> swap(int *p1, int *p2)
{
int *p;
p = p1;
p1 = p2;
p2 = p;
} void main()
{
int *pointer_1, *pointer_2;
int a, b; scanf("%d %d", &a, &b); pointer_1 = &a;
pointer_2 = &b; if(a<b)
swap(pointer_1, pointer_2);
printf("a = %d, b = %d", a, b);
printf("\nmax=%d min=%d\n", *pointer_1, *pointer_2); } #endif |