|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么用交换地址的方法就改变不了在main函数里的值呢?而使用间接运算符的就可以。
代码(交换地址版)
- #include <stdio.h>
- void swap(int *x, int *y)
- {
- int *t = x;
- x = y;
- y = t;
- printf("交换中:\n");
- printf("x = %d, x = %p\n",*x, x);
- printf("y = %d, y = %p\n",*y, y);
- }
- int main()
- {
- int x = 3;
- int y = 5;
- printf("交换前:\n");
- printf("x = %d, &x = %p\n",x, &x);
- printf("y = %d, &y = %p\n",y, &y);
- swap(&x,&y);
- printf("交换后:\n");
- printf("x = %d, &x = %p\n",x, &x);
- printf("y = %d, &y = %p\n",y, &y);
-
- return 0;
- }
复制代码
代码(间接运算符)
- #include <stdio.h>
- void swap(int *x, int *y)
- {
- int t = *x;
- *x = *y;
- *y = t;
- printf("交换中:\n");
- printf("x = %d, x = %p\n",*x, x);
- printf("y = %d, y = %p\n",*y, y);
- }
- int main()
- {
- int x = 3;
- int y = 5;
- printf("交换前:\n");
- printf("x = %d, &x = %p\n",x, &x);
- printf("y = %d, &y = %p\n",y, &y);
- swap(&x,&y);
- printf("交换后:\n");
- printf("x = %d, &x = %p\n",x, &x);
- printf("y = %d, &y = %p\n",y, &y);
- return 0;
- }
复制代码 |
|