| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 469 人关注过本帖
标题:指针的调用
只看楼主 加入收藏
笨女孩
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2011-7-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
指针的调用
程序代码:
#include<stdio.h>
void swap(int *x,int *y)
{
    int *temp;
    temp=x;
    x=y;
    y=temp;   
}
int main()
{
    int a=2,b=5;
    int *p=&a,*t=&b;
    swap(p,t);
    printf("%d\t%d\n",a,b);
    printf("%d\t%d\n",*p,*t);
    return 0;
}
为什么答案是2、5、2、5
而不是2、5、5、2
我是把指针交换了啊!求解

[ 本帖最后由 笨女孩 于 2011-7-20 16:32 编辑 ]
2011-07-20 16:20
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
void swap(int *x,int *y)
{
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;  
}

My life is brilliant
2011-07-20 17:29
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
收藏
得分:20 
不要想改变形参的值而改变的实参的值;就如楼上的代码,楼主的传递的是地址但是改变的也是地址,所以错了,楼上是传递了地址,然后通过地址找到对应的值然后改变他,我们没有改变形参(地址),改变的是形参所对应的值
2011-07-20 17:43
loveshuang
Rank: 9Rank: 9Rank: 9
来 自:湖北武汉
等 级:蜘蛛侠
帖 子:270
专家分:1198
注 册:2010-11-14
收藏
得分:0 
      这个和swap(int a,int b);没区别的,要达到原变量的交换就得交换内存里面的东西,或者用引用传递。取指针只想内存里面的东西交换才能达到目的,2楼正解代码
2011-07-20 18:57
爱德华
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:183
专家分:536
注 册:2011-5-29
收藏
得分:0 
void swap(int *x,int *y)
{
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;  
}

算法,数据结构,windows核心编程.
2011-07-20 18:59
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
补充下也就是说你只是把指针的值改变了但是指针所指向的值没变
2011-07-20 19:22
少林小和尚
Rank: 2
等 级:论坛游民
帖 子:57
专家分:26
注 册:2013-3-31
收藏
得分:0 
函数调用时   从实参的数值给形参  ,是单向的
2013-05-05 23:49
快速回复:指针的调用
数据加载中...
 
   



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

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