标题:刚学c不久,求助!!!
只看楼主
Jeff依然
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-4-7
结帖率:100%
已结贴  问题点数:10 回复次数:2 
刚学c不久,求助!!!
#include
float fun(float x,float y);
void main()
{
    float m,n,*p,*q;
    m=3,n=4;
    p=&m,q=&n;
    fun(*p,*q);
    printf("%f,%f\n",m,n);
}
float fun(float x,float y)
{
    float r,*p,*q;
    p=&x,q=&y;
    r=*p;
    *p=*q;
    *q=r;
    return(x,y);
}
不是很清楚每个变量的生命期,好像有一种方法可以借助这个自定义的函数交换m和n的值,求大神指导下
搜索更多相关主题的帖子: void return 
2012-04-08 15:54
阿敏_000
Rank: 2
等 级:论坛游民
帖 子:10
专家分:10
注 册:2012-1-14
得分:4 
如果要交换m,n的值,这个程序有错误。
主函数main里的m,n,p,q的生命周期是整个程序运行完,也就是说主函数调用完。fun函数里的x,y,r,p,q的周期是主函数调用fun函数时存在,等到调用完了就释放。而且p,q和主函数里的变量重名了,主函数的p,q变量暂时被遮掩了。最后的return只能返回一个值,是返回不了两个值的。
你要交换m和n的值,要用指针。
2012-04-08 16:16
阴阳
Rank: 4
等 级:业余侠客
帖 子:102
专家分:297
注 册:2012-4-7
得分:4 
程序代码:
#include<stdio.h>
void fun(float *x,float *y);
void main()

 {
      float m,n,*p,*q;
      m=3,n=4;
      p=&m,q=&n;
      fun(p,q);
      printf("%f,%f\n",m,n);

 }
void fun(float *x,float *y)

 {
      float r;

      r=*x;
      *x=*y;
      *y=r;
    
}


[ 本帖最后由 阴阳 于 2012-4-8 16:24 编辑 ]

一阴一阳之谓道!
2012-04-08 16:22



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




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

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