| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:求解析下
只看楼主 加入收藏
瞎老头
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-19
收藏
 问题点数:0 回复次数:6 
求解析下
#include<iostream>
using namespace std;

void get_numbers(int& input1,int& input2);
void swap_values(int& variable1,int&  variable2);
void show_results(int out1,int out2);

int main()
{
  int first_num,second_num;

  get_numbers(first_num,second_num);
  //cout<<first_num;
  swap_values(second_num,first_num);
  //cout<<first_num;
  show_results(first_num,second_num);

  return 0;
}

void get_numbers(int& input1,int& input2)
{
    cout<<"Enter your two numbers:\n";
    cin>>input1
        >>input2;
    cout<<endl;
}

void swap_values(int& variable1,int& variable2)
{
    int tem;
    tem=variable1;
    variable1=variable2;
    variable2=tem;
}

void show_results(int output1,int output2)
{  

    cout << "firstnum is :"<<output1<<endl;
    cout <<"secondnum is:"<<output2<<endl;
}


当在把void swap_values(int& variable1,int& variable2)改为传值调用的时候,怎么交换功能就不能实现了?
本人新手,谢谢了!
搜索更多相关主题的帖子: Enter return numbers include void 
2012-10-28 16:08
小小小火柴
Rank: 5Rank: 5
来 自:江西赣州
等 级:职业侠客
威 望:3
帖 子:141
专家分:337
注 册:2012-9-28
收藏
得分:0 
        可以实现啊? 我输入2 3 得到的结果是:    firstnum is :3
secondnum is:2

   好好学习!
2012-10-28 16:58
瞎老头
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-19
收藏
得分:0 
没啊,我试了多变,还是没交换值呢?不是引用调用,引用调用可以,值就不可以了,,郁闷.\

#include<iostream>
using namespace std;

void get_numbers(int& input1,int& input2);
void swap_values(int variable1,int  variable2);
void show_results(int out1,int out2);

int main()
{
  int first_num,second_num;

  get_numbers(first_num,second_num);
  //cout<<first_num;
  swap_values(first_num,second_num);
  //cout<<first_num;
  show_results(first_num,second_num);

  return 0;
}

void get_numbers(int& input1,int& input2)
{
    cout<<"Enter your two numbers:\n";
    cin>>input1
        >>input2;
    cout<<endl;
}

void swap_values(int variable1,int variable2)
{
    int tem;
    tem=variable1;
    variable1=variable2;
    variable2=tem;
    cout<<variable2;
}

void show_results(int output1,int output2)
{  

    cout << "firstnum is :"<<output1<<endl;
    cout <<"secondnum is:"<<output2<<endl;
}

再看下,谢谢了
2012-10-29 10:10
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:0 
你应该好好看看传址调用和传值调用

马马虎虎 不吝赐教 我是路过蹭分滴
2012-10-29 10:29
超级菜鸟手
Rank: 3Rank: 3
来 自:太阳系
等 级:论坛游侠
帖 子:34
专家分:109
注 册:2012-10-24
收藏
得分:0 
传值(pass by value) - 不会改变原有的value
传引用(pass by reference) - 会随着value的改变

好比说这个
void swap_values(int &variable1,int &variable2)
{
    int tem;
    tem=variable1;
    variable1=variable2;
    variable2=tem;
    cout<<variable2;
}

当没有红色标记的符号时 返回的value是原有的 而不是 swap_value 过后的
也许你的 cout<<variable2 是改变过后的value
但在你void show_results 你都value 还是原有的value

[ 本帖最后由 超级菜鸟手 于 2012-10-29 17:28 编辑 ]
2012-10-29 11:07
瞎老头
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-19
收藏
得分:0 
回复 5楼 超级菜鸟手
太谢谢了。。有点懂了……我再练习个…………
2012-10-30 20:42
瞎老头
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2012-10-19
收藏
得分:0 
DigitalTime::DigitalTime(int the_hour,int the_minute)
{
    if(the_hours<0||the_minute>59||the_hour>23||the_minute<0)
    {
        cout<<"Illgal argument to DigitalTime constructor.\n"'
            exit(1);
    }
    else
    {
        hour=the_hour;
        minute=the_minute;
    }

}

像这样的定义构造函数,给私有变量hour和minute初始化,算不算是传值调用呢?要是的话,在调用函数外部,私有变量岂不是没法初始化了?
2012-10-30 21:51
快速回复:求解析下
数据加载中...
 
   



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

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