标题:为什么两个值最后没有交换
只看楼主
l562233174
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-5
结帖率:100%
已结贴  问题点数:20 回复次数:7 
为什么两个值最后没有交换
/*  HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"
swap(int a,int b)
{
    int temp;
    temp=a;a=b;b=temp;
}
main()
{
    int x=7,y=11;
    printf("x=%d,\ty=%d\n",x,y);
    printf("swapped:\n");
    swap(x,y);
    printf("x=%d,\ty=%d\n",x,y);
    getch();
}

先谢谢 帮忙解答
搜索更多相关主题的帖子: include world 
2013-01-23 18:05
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:0 
程序代码:
swap(int a,int b)
{
    int temp;
    temp=a;a=b;b=temp;
}
这个操作是在函数中执行的,函数会将带入的变元先进行复制再用复制的变量来进行操作,这些局部变量不会影响到变元本身,除非这样:
程序代码:
void swap(int *a, int *b)
{
  int temp = *a;
  *a = *b;
  *b = temp;
} swap(&x, &y);

因为即使指针被复制,但是它的值也就是它指向的地址是不变的,所以依旧可以进行赋值操作且有效

I have not failed completely
2013-01-23 18:17
Johnsonzhen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:108
注 册:2013-1-19
得分:0 
作用域与可见性。  楼上是正解!
2013-01-23 18:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
在这里是值传递 只有变量的值过去了 变量本身并没过去 所以不会改变

这是C的特性 理解就好了
2013-01-23 19:05
l562233174
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-5
得分:0 
虽然不是太深入的明白 大概了解意思  新人刚起步 谢谢帮助
2013-01-23 20:42
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
得分:20 
以下是引用l562233174在2013-1-23 20:42:29的发言:

虽然不是太深入的明白 大概了解意思  新人刚起步 谢谢帮助
就好像是这样:
int test(int x)
{
   x += 2;
   return x;
}
int a = 2;
假设传导test(a);
则函数所做的实际操作是:
int x = a;
x += 2;
return 0;
此时x的值为4,而a的值仍然为2,就是将a的值复制一份,并将这份值储存在一个局部变量x中
你应该能懂了,大概吧...

I have not failed completely
2013-01-23 20:51
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
得分:0 
顶楼上

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2013-01-23 20:54
l562233174
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-1-5
得分:0 
回复 6楼 神龙赖了
豁然开朗  嘿嘿 谢了
2013-01-23 20:56



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




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

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