黑马程序员技术交流社区
标题: 指针向函数的指针 [打印本页]
作者: 踏出梦想的轨迹 时间: 2014-8-6 17:52
标题: 指针向函数的指针
#include <stdio.h>
void swap(int *v1, int *v2);
int main()
{
int a = 90;
int b = 89;
swap(&a2, &b2);
printf("a2=%d, b2=%d\n", a, b);
return 0;
}
void swap(int *v1, int *v2)
{
int *temp;
temp = v1;
v1 = v2;
v2 = temp;
}
为什么用指针方法a和b的值没有互换,哪里出问题了,是不是这种方法调用的函数还是值传递,地址的形参不能传递给实参?
要怎么改?
作者: ★彬★卍囧神 时间: 2014-8-6 19:02
- void swap(int *v1, int *v2)
- {
- int temp;
- temp = *v1;
- *v1 = * v2;
- *v2 = temp;
- }
复制代码 我绝的是这样.
作者: 从今以后 时间: 2014-8-6 20:27
指针变量也要遵循“值传递”,因而两个指针变量并未完成交换,楼上是直接操作指针变量指向的内存地址,两个地址存储的值已经被交换了
作者: cjfire 时间: 2014-8-6 21:53
你的这个程序运行过么?并没有看到有关于a2和b2的定义啊?!
作者: -(_)- 时间: 2014-8-7 09:32
楼主你的程序定错了吧, 看你的swap方法没有问题, 你的a2跟b2哪来的. 你这样这程序应该编译都过不了啊
作者: cjfire 时间: 2014-8-7 10:33
- #include <stdio.h>
- void swap(int *v1, int *v2);
- int main()
- {
- int a = 90;
- int b = 89;
- swap(&a, &b);
- printf("a=%d, b=%d\n", a, b);
- return 0;
- }
- void swap(int *v1, int *v2)
- {
- int temp = *v1;
- *v1 = *v2;
- *v2 = temp;
- }
复制代码
作者: cjfire 时间: 2014-8-7 11:33
这是对程序的讲解
-
无标题.png
(45.94 KB, 下载次数: 27)
作者: 陆习康 时间: 2014-8-7 15:05
楼主的代码写的有点问题,a2,b2 main函数没有定义,在swap中交换值,交换的有点不对,楼上的代码已经为您解决了,希望楼主把指针这块的视频再看看,相信楼主很快就能明白
作者: 卡哇伊 时间: 2014-8-8 10:01
这样互换的题 有三种做法
1, int temp = a ;
a = b ;
b = temp;
2种:a = a ^ b
b = a ^ b
a = a ^ b
3种: a = b - a;
b = b - a;
a = b + a;
完事 各种解。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |