| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1331 人关注过本帖
标题:[求助]菜鸟问题! 关于返回值return [已结束]
只看楼主 加入收藏
ratter
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-2-19
收藏
 问题点数:0 回复次数:8 
[求助]菜鸟问题! 关于返回值return [已结束]
整段程序:
int main( )
{ int max_value ( int x,int max );
  int i, j, row = 0, colum = 0 , max
  int a[3] = { {5,12,23,56} , {19,28,37,46} , {-12,-34,6,8} };
  max = a [0] [0];
  for ( i =0; i <=2; i++ )
    for ( j =0; j <=3;  j++)
       { max= ,max_value( a [i] [j],max );
         if ( max == a [i] [j] )
            { row = i ;
              colum =j ;
            }
   cout <<max , <<row , <<colum<<endl ;
}


int max_value(int x, int max)
{ if ( x>max ) return x;
  else return max;
}



问题是当书上说 , 下边这个函数是不行的!
原因书上也没说!书上说让读者自己去找原因!
我查了一下返回值语句的介绍,可还短短5行字也没写明白它的函意!
哪为哥哥给我讲一下return语句的具体作用!
下边这个函数又为什么不行呢?

int max_value ( int x, int max)
{ if ( x>max ) max=x; }


[此贴子已经被作者于2005-2-20 19:37:14编辑过]


搜索更多相关主题的帖子: 返回值 return 结束 
2005-02-19 15:53
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
int max_value ( int x, int max)
{ if ( x>max ) max=x; }

这么个函数当然是不对的了, 他根本没有返回任何东西。

首先,一个函数肯定是要干些什么的,或者说,它会帮你完成你想让它做的事情。比如比较两个数的大小。
有的函数不需要反馈任何信息,比如让一个函数去打印点什么东西:
void print_something(std::string something)
{
   std::cout<<something<<endl;
}

有的函数需要将执行的结果反馈给你,比如比较两个数的大小。
int get_max1(int num1, int num2)   // 值传递
{
   if(num1>num2)
      return num1;
   else
      return num2;
}
如果你是通过引用传递,那么你可以将上面的函数改写如下:
void get_max2(int num1, int num2, int & max)
{
      max = (num1>num2)?num1:num2;
}

这个函数看似没有返回值,其实它是将值返回给了那个引用参数了。

我打个比方,你大概可以清楚些。
get_max1 好比是这样: 老板让你去比较两个数的大小,你跑到那个车间里去(比较在那个车间里进行),比较完毕你跑出来,把比较结果告诉老板。
get_max2 好比是这样: 老板让你去比较两个数的大小,你跑到那个车间里去(比较在那个车间里进行),并且老板派了个秘书跟你一块儿去,比较完毕你只需要将比较结果告诉老板的秘书就可以了。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-02-19 21:56
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
#include <iostream>
#include <cstdlib>

void get_max(int num1, int num2, int & max);

int main()
{
    int a = 3;
    int b = 9;
    int max = 0;
    get_max(a, b, max);
    std::cout<<max<<std::endl;
    system("pause");
    return 0;
}

void get_max(int num1, int num2, int & max)
{
    max = (num1>num2)?num1:num2;
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-02-19 21:59
ratter
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-2-19
收藏
得分:0 

看到 kai 老师给我这样详细的解说,我十分感动!  谢谢你

现在明白了!

[此贴子已经被作者于2005-2-20 15:34:12编辑过]


2005-02-20 15:33
lcm
Rank: 4
等 级:贵宾
威 望:13
帖 子:140
专家分:0
注 册:2005-2-4
收藏
得分:0 
system("pause");  
这个是干什么用的??

从 小 事 做 起,脚 踏 实 地 ~
2005-02-23 08:56
任林
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-2-22
收藏
得分:0 
std::cout<<max<<std::endl;
这个std::是什么???有什么作用???难道是类,如果不要这个,程序还是可以正常执行呀
2005-02-24 11:13
timmy
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-2-25
收藏
得分:0 
system("pause");
调用DOS命令pause,就是暂停的意思~~
std,应该是直作用域,就是调用std里面的,cout,endl
不知道讲的对不对,呵呵~~
2005-02-26 18:20
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
timmy 的解释完全正确。 之所以在cin, cout 直接用std , 这是为了避免使用 using namespace std;
否则的话,3楼的程序中必须使用using namespace std,
或者使用 using std::cout;
               using std::endl;
如:

#include <iostream>
#include <cstdlib>

void get_max(int num1, int num2, int & max);

int main()
{
    using std::cout;
    using std::endl;
    int a = 3;
    int b = 9;
    int max = 0;
    get_max(a, b, max);
    cout<<max<<endl;
    system("pause");
    return 0;
}

void get_max(int num1, int num2, int & max)
{
    max = (num1>num2)?num1:num2;
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-02-27 09:17
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
任林, 如果你的编译器在不需要std 的情况下,依然不报错的话,那你可以将你的那个可怜的编译器删掉了. 我只用两种编译器: VC 和 Dev

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-02-27 09:45
快速回复:[求助]菜鸟问题! 关于返回值return [已结束]
数据加载中...
 
   



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

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