|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我打算用指针变量为形参,进行三个数从小到大的排序。
但是在我调试的时候,发现在swap函数里地址是交换成功的,
可是一回到compare函数里,地址用变回原来的样子了。
希望大家给我这个小白一点建议,谢谢
- #include "stdio.h"
- void main()
- {
- int a, b, c;
- int *A, *B, *C;
- void compare(int *x, int *y, int *z);
-
- printf("please input a, b, c\n");
- scanf("%d %d %d", &a, &b, &c);
- A = &a;
- B = &b;
- C = &c;
- compare(A, B, C);
- }
- void compare(int *x, int *y, int *z)
- {
- void swap(int *x, int *y);
-
- if(*x > *y)
- {
- swap(x, y);
- }
- if(*x > *z)
- {
- swap(x, z);
- }
- if(*y > *z)
- {
- swap(y, z);
- }
- printf("%d < %d < %d\n", *x, *y, *z);
- }
- void swap(int *x, int *y)
- {
- int *temp;
-
- temp = x;
- x = y;
- y = temp;
- }
复制代码
swap的参数应该是指向指针的指针,因为你要改变指针自身的指向。
把调用这个函数的实参前加个&
- void swap(int **x, int **y)
- {
- int *temp;
-
- temp = *x;
- *x = *y;
- *y = temp;
- }
复制代码
|
-
如如所示
|