为什么不可以这样做的?

来源:百度知道 编辑:UC知道 时间:2024/05/08 01:18:06
#include <iostream>
using namespace std;
int main( )
{ int max_value(int x,int max); //函数声明
int i,j,row=0,colum=0,max
int a〔3〕〔4〕={{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); //调用max_value函数
if(max==a〔i〕〔j〕) //如果函数返回的是a〔i〕〔j〕的值
{row=i; //记下该元素行号i
colum=j; //记下该元素列号j
}
}
cout<<〃max=〃<<max<<〃,row=〃<<row<<〃,colum=〃<<colum<<endl;
}

int max_value(int x,int max) //定义max_value函数
{if(x>max) return x; //如果x>max,函数返回值为x
else return max; //如果x≤max,函数返回值为max
}

为什么不可以这样做的?
将后面函数写成:

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

正常的思维是这样做的:
int max_value(int x,int max) //定义max_value函数
{
if(x>max) return x; //如果x>max,函数返回值为x
else return max; //如果x≤max,函数返回值为max
}
这样做就比较奇怪一点 -.=
int max_value(int x, int max)
{
if(x>max) max=x;
return max;
}

没有必要修改max值然后再return它嘛因为,
就像楼上说的,那样,max是传入参数,
而且是主调函数中那个变量的一份拷贝,
在max_value里修改max的值不会影响函数外边的那个
max,两个max只是恰好名字相同而已

语法规则

可以这样写:
int max_value(int x, int max)
{
if(x>max) max=x;
return max;
}

必须通过返回值传递,因为max是传入参数,不能把参数出函数