(二)发挥部分 1、 想使指针变量 pt1 指向 a 和 b 中的大者,pt2 指向小者,以下程序能否实现此目的, 如不能,应如何修改? void swap(int *p1,int *p2) { int *p; p=p1;p1=p2;p2=p; } void main(void) { int a,b; int *pt1,*pt2 ; scanf("%d,%d",&a,&b); pt1=&a; pt2=&b ; if(a<b) swap(pt1,pt2); printf("%d,%d \n",*pt1,*pt2) ; }
时间: 2023-08-08 10:04:52 浏览: 564
程序设计-如何定义和使用指向函数的指针变量.pptx
不能实现此目的,因为 swap 函数内部的指针交换并没有影响到 main 函数中的指针 pt1 和 pt2。
可以修改 swap 函数如下:
```
void swap(int **p1, int **p2) {
int *temp;
if (**p1 < **p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
```
同时在 main 函数中调用 swap 函数时,需要传入指针的地址:
```
swap(&pt1, &pt2);
```
这样就能够使指针变量 pt1 指向 a 和 b 中的大者,pt2 指向小者。
阅读全文