注册 登录
编程论坛 C++教室

函数的返回值

kyletan0808 发布于 2019-09-30 13:05, 2373 次点击
刚接触C++
求教大家函数的返回值是怎样被主调用函数接收的?

比如 bool f(x,y);

int main()
{
  
  f(m,n);
  int m = ?;
  int n = ??;
  ....
  ....
}



bool f(x,y)
{
  if(x>y){
  return ture;
}else{
  return false;
}
  
}
那么这个bool值应该怎样保存,需要另外在main()中定义一个bool接收它吗?
8 回复
#2
kyletan08082019-09-30 13:07
int main()
{
  int m = ?;
  int n = ??;
  f(m,n);
  ....
  ....
}



bool f(x,y)
{
  if(x>y){
  return ture;
}else{
  return false;
}
  
}
那么这个bool值应该怎样保存,需要另外在main()中定义一个bool接收它吗




不好意思顺序弄错了,应该是这样
#3
rjsp2019-09-30 13:22
你想保存那就 bool result = f(m,n)
你不想保存那就 f(m,n)
#4
kyletan08082019-10-01 23:36
以下是引用rjsp在2019-9-30 13:22:00的发言:

你想保存那就 bool result = f(m,n)
你不想保存那就 f(m,n)

明白了,感谢不吝赐教! 如果返回值不被接收的话那它所占的内存就会立即被释放对吗?

另外还想请教一下:

bool noNegatives(const int array[],int siz)
{
    bool noduplicate = true;
    int count;
   
   
    for (count = 0; count < siz; count++){
            if(array[count] == array[count + 1]){     // 如果所有输入里面没有重复数,就返回1给主调用函数
               
                noduplicate = false;
               
              }
        }
   
    return noduplicate;

}

以上是我定义的一个函数,目的是比较所有接收到的用户输入(整数),如果没有重复的数组元素就返回1. 但是程序只能比较相邻的两个数如(1 2 3 4 5)。如果是(1 2 1 4 5)就无法返回真实的结果。 有什么提示可以避免这种情况吗?
谢谢!
#5
uouo992019-10-02 09:21
比较之前先排个序

#include<algorithm>
...
std::sort(array,array+count);
//再执行比较操作
#6
kyletan08082019-10-02 13:00
以下是引用uouo99在2019-10-2 09:21:35的发言:

比较之前先排个序

#include<algorithm>
...
std::sort(array,array+count);
//再执行比较操作



好方法!
被作业困扰了一个星期终于解放了。。。
感激不尽!
#7
踏平怡红院2019-10-02 14:17
你比较的只是往后一个元素是否重复
#8
雪影辰风2019-10-04 20:34
对于返回值这种问题你需要理解一下,一般void类型的都是用来单纯处理数据或者递归搜索,但是其他类型就有可能不一样,比如说int型:
int型如果是用来求值的,比如说
int max(int a,int b)
{
   return a>b?a:b;
}
但是也有用来处理数据但是最终不需要取出答案的,比如说做记忆化搜索
#9
SSSVIPshadow2019-10-08 12:04
学习下
1