交换地址(指针变量),使p1指向大数b,而变量a、b未 变 p &a p &b &b &a
交换地址(指针变量),使p1指向大数b,而变量a、b未 变。 &a &b 9 &b &a p1 a p1 a p2 b p2 b 5 5 9 p p
三、指针变量作为函数参数 说明:将一个变量的地址传送到另一函数中,实参和 形参均用指针。 L例10.3]对整数按大小顺序输出。用函数处理,且用 指针作函数参数 swap (int *p1 int *p2) int p; p=*p1*p1=*p2;*p2=p} main O t int a, b int *p1, *p2; scanf("%d,%d”,&a&b) p1=&a;p2=&b if (a<b) swap (p1,p2); printf("Ⅶn%d,%dⅧn"a,b);}
三、指针变量作为函数参数 说明:将一个变量的地址传送到另一函数中,实参和 形参均用指针。 [例10.3] 对整数按大小顺序输出。用函数处理,且用 指针作函数参数。 swap(int *p1 ,int *p2) {int p; p=*p1; *p1=*p2; *p2=p; } main() { int a,b; int *p1, *p2; scanf("%d,%d” ,&a,&b); p1=&a;p2=&b; if(a<b) swap (p1 ,p2); printf ("\n%d,%d\n"a,b); }
传递的是变量的指针,在函数中交换的是变量中的内容,主 函数中读取交换了的内容。这里指针未变,与上题相反 &a 8. 5 pointer-1 tointer-1a ointer 9 &a 5 B ointer-2 b &b b &b 8 b 5 ter- 2 &b 8.b
传递的是变量的指针,在函数中交换的是变量中的内容,主 函数中读取交换了的内容。这里指针未变,与上题相反
以下代码可以实现变量a与b的交换吗? swap(int pl, int p2) Cint p; p=pl; p1=p2; p2=p;} main () dint a, b: int*1,*2; scanf(”%d%d,&a,&b) p1=&a;p2=&b; if (a<b) swap(p1, p2); printf(”%d,%dn”,*p1,*2);}
以下代码可以实现变量a与b的交换吗? swap(int *pl,int *p2) {int *p; p=pl; p1=p2; p2=p; } main() { int a,b; int *p1, *p2; scanf (”%d%d” ,&a,&b); p1=&a;p2=&b; if(a<b) swap(p1 ,p2); printf(”\n%d,%d\n” ,* p1, *p2); }
出错的原因是参数不是双向传递。 P1 a a a p a &a 5 &a 5 &b5 &b 5 b &b 9 &b &a9 &a9 a
出错的原因是参数不是双向传递。 &a &b 5 9 &a &b 5 9 &b 5 &b 5 &a 9 &a 9 P1 a p1 a p1 a p1 a p2 b p2 b p2 b p2 b (a) (b) (c ) (d)