| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:指针问题?
只看楼主 加入收藏
恩怨情仇
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2008-11-8
结帖率:71.43%
收藏
 问题点数:0 回复次数:4 
指针问题?
int abc(int *x,int *y)                                          int abc(int *x,int *y)
{int a;                                                          {int a;
    a=*x;                                                         a=*x;
    *x=*y;                                                        *x=*y;
    *y=a;                                                          *y=a;
 }                                                                 }
main()                                                            main()
{int a,b,*c,*d;                                                   {int a,b,*c,*d;
    scanf("%d%d",&a,&b);                                       scanf("%d%d",&a,&b);
    c=&a;d=&b;                                                     c=&a;d=&b;
    if(a>b) abc(c,d);                                           if(a>b) abc(*c,*d);
    printf("a=%db=%d\n",a,b);                                      printf("a=%db=%d\n",a,b);
   
}                                                                     }
请教各位,为什么 abc(c,d)不能换成abc(*c,*d)呢?
指针变量*c,*d不是分别指向a.b的吗,在调用"abc"时,为什么(*x,*y)就不能转换了
搜索更多相关主题的帖子: 指针 
2008-12-13 16:29
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
*这个有好几个功能.
第一:定义指针功能
第二:将指针内的东西取出来
定义的时候肯定用的第一各功能,而你在调用函数的时候使用*就是使用的第二个功能,不行的话你就用
printf("%d",*c);看看,这个的输出结果不是c指向的地址,而是c所指向的地址中的内容,你这个程序可以简单一点.直接用&就Ok了.

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 16:33
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
简单的方法
有简单的注释
程序代码:
int abc(int *x,int *y){
  int a;
  a=*x;
  *x=*y;
  *y=a;
}
main(){
  int a,b;  /*没定义指针变量*/
  scanf("%d%d",&a,&b);
  if(a>b)
    abc(&a,&b);  /*直接将地址付给形参*/
  printf("a=%db=%d\n",a,b);
}

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-12-13 16:35
恩怨情仇
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2008-11-8
收藏
得分:0 
谢谢LS我主要使用指针做参数进行值传递,不明白的是前者"c,d"分别为"&a,&b",后者"*c,*d"不也是"&a,&b"吗?为什么后者不能换成前者了
2008-12-13 16:52
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
回复 第4楼 恩怨情仇 的帖子
你的程序中,实参向形参的传递是地址传递。前者abc(c,d)中c=&a,d=&b,即c的值是a的地址,d的值是b的地址,通过改变指针指向来交换a和b的值。后者abc(*c,*d)中*c=a,*d=b,即*c的值是a,*d的值是b,实参为值,形参为地址,故无法实现传递。

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-13 19:22
快速回复:指针问题?
数据加载中...
 
   



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

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