标题:请问a和b的值为什么没有交换?(在线等答案)
只看楼主
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
得分:0 
总结  按植交换   交换地址并没有改变制的大小

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-15 15:41
zook0k
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-5-2
得分:0 
#include "Stdio.h"
#include "Conio.h"

void fun(int *a, int *b)

{

int *k;

k=a; a=b; b=k;
//k=*a; *a=*b; *b=k;

printf("%d %d\n", *a, *b);
}

main(){

int a=3, b=6, *x=&a, *y=&b;

printf("%d %d\n", *x,*y);

fun(x,y);

printf("%d %d", a, b);

getch();

}
形参不能传给实参,你的为什么没传过来的原因
2楼的是通过形参操作实际内存单元进行数据交换
2008-04-15 15:41
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
得分:0 
[bo]以下是引用 [un]mqh21364[/un] 在 2008-4-15 15:41 的发言:[/bo]

fun(x,y)
x, y是实参。函数不改变实参的值。


这里 x y 是地址好不 按地址传递

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-15 15:42
艾森
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-10
得分:0 
谢谢大家,差不多明白了,还有一个小问题。
“int k”和“int *k” 为什么运行的结果都是一样呢?

[[it] 本帖最后由 艾森 于 2008-4-15 15:53 编辑 [/it]]

2008-04-15 15:45
zook0k
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-5-2
得分:0 
应该一样啊
int k定义k为一个int型
int *k定义k为一个指向int的指针
交换时候都是当成一个中间转换物,没啥区别,只要不超出范围就行了
2008-04-15 15:59
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
得分:0 
[bo]以下是引用 [un]艾森[/un] 在 2008-4-15 15:45 的发言:[/bo]

“int k”和“int *k” 为什么运行的结果都是一样呢?

“int k”K 是个变量 (等量带换你知道把)“int *k”  K是地址了现在(存放指针A 的地址)  也就是定义了个指针 指向指针a指向的地址 (A B指针交换) 最后又把A 的地址(也就是存放A 地址的K)给了指针B    也就是指针B志向了 K
2及指针问题   不知道我说的是不是很清楚 也就是着时候 不是等量带换问题了  而是指针交换问题了  哟兴趣可以研究

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-15 16:01
艾森
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-10
得分:0 
楼上的两位,谢谢讲解,已经清楚很多了,楼上的QQ号多少啊,要向你多学习学习啊。

2008-04-15 16:15
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
得分:0 
我指针是半调子 你可以加群和别人讨论 我QQ349746814  群21135958 群主 研究到 3及指针了 你可以和他讨论 多讨论有助学习  我是这样认为的

------...-.-..-...-----........-------.......----.....------....||- - !
2008-04-15 16:21
艾森
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-5-10
得分:0 
呵呵,楼上的真谦虚啊,我就是指针那昏掉了。

2008-04-15 16:23
fanchunwei
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-8
得分:0 
fun(x,y) 中的x,y  都是局部变量 只在函数内部可见,在内存中fun(x,y)中的x,y和外部的x,y是相互独立的,其实fun(x,y)中的x,y就相当于fun.x fun.y你交换的只是fun.x,fun.y
2008-04-15 17:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-209164-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.101413 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved