IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【对于函数return的理解学习】 -> 正文阅读

[C++知识库]【对于函数return的理解学习】

如何理解return?

一个函数中可能存在多个return的情况,不管程序执行流程出发了哪个return,都会造成当前函数的立即终止,所以不存在执行两个以及以上return的可能

return就是表示退出当前函数,入口只有一个,但是出口可以有很多个,退出函数后,函数内的全部局部变量不能使用。

多种情况的说明

  1. 返回值类型与函数类型一致,不一致则自动将返回值类型转换成函数类型
  2. 函数中存在多条return语句,一般与if连用,执行到哪个return返回值语句,哪个语句就终止函数,后面的不再继续执行。
  3. 无return的函数,执行到函数结尾时候返回,返回一个不确定的数值给函数
  4. 如果只需要从函数中返回但是不需要任何返回值,可以使用不带表达式的return语句。博客小精华🤭

函数返回多个值如何实现?

大致遵从大神的道路整理了三种返回多个返回值的函数创建方法!一起来学习吧

  1. L申请全局变量(慎用
    2.数组指针法
    结构体指针法

全局变量法

  1. 由于全局变量的作用域是从定义变量开始直到程序结束。
  2. 而对于编写有多个返回值的C语言函数,我们可以考虑把要返回的多个值定义成全局变量。
  3. 当函数被调用时,全局变量被更改,我们再把更改后的全局变量值应用于主调函数中。函数被调用后被更改后的全局变量值即为函数的数个返回值。
  4. 😵文字啰嗦(小小一声sorry
    求最大最小数值:运用到了全局变量的观念(很好理解
#include <stdio.h>
#include <conio.h>
int max,min;//定义两个全局变量用于保存函数的返回值
void max_min(int a,int b) /*定义求最大最小值的函数*/ 
{
    max=min=a; /*初始化最大最小值*/
   	 max=(a>b)?a:b;
    min=(a<b)?a:b;//make by 以太
}
main()  
{
  int x,y;
  printf("请输入2个整数:\n");  
  scanf("%d,%d",&x,&y);
  max_min(x,y) ;/*调用求最大值与最小值的函数*/
  printf("l两个数中的最大值为:%d;最小值为:%d",max,min);/*输出最大值与最小值*/  
 // 结果max=100,min =10;
}

数组指针法

👩?🏫👩?🏫👩?🏫值传递VS地址传递

值传递:
是(main)主调函数(提供实际参数的函数)把实参的值复制给形式参数(被调函数(形式参数接收实际参数数值的函数)(自己的设置函数)参数值的变化并不能改变实参数值)。)
通俗理解别人的东西我可以买到,但是不能占有,我可以随心所欲把我买到的相同物品改成我想改成的样子
=====================================
地址传递:
从实参中传递过来的是实参变量的地址,所以被调函数中形参的改变使得实参也发生变化。
但是鸠占鹊巢的实际故事也不少标😓😓😓

因此,我们可以考虑把多个返回值作为数组元素定义一个数组的形式,并使得该数组的地址,作为函数的形式参数,以传地址的方式传递数组参数,被调函数调用后,形式参数的改变使得实际参数的改变,这样我们再从改变后的数组元素中获得函数的多个数值。
🤫(**偷摸学**到了,**内卷**成功😏😏😏😏)
需要注意的是,如果是数组指针形式,必须要求多个函数的参数必须类型相同

//花了10min理解,我咋那么次
#include <stdio.h>  
  void max_min(int *ptr,int n) /*定义求数组最大值最小值的函数,传递数组指针*/
  {
  int i,j,k;/*j保存最大值所在位置,k保存最小值所在位置*/  
  int *temp;/*用于交换位置*/  
  *temp=*ptr;  
    for(i=0;i<n;i++)  {
  		if(*ptr<*(ptr+i))/*最大值与第一个元素进行交换*/  {  
       	k=i;
  		  *temp=*ptr;  
       	*ptr=*(ptr+k);  
       	*(ptr+k)=*temp; }
  		if(*(ptr+n-1)>*(ptr+i))/*最小值与最后一个元素进行交换*/  {  
  		  j=i;
  		  *temp =*(ptr+n-1);
      	 *(ptr+n-1)=*(ptr+j);  
     	 *(ptr+j)= *temp;}  //make by 以太
   }  
  }
  /*调用最大最小值函数*/  
   
  main()  
{
  int A[6],i;
  for(i=0;i<6;i++)   
    scanf("%d",&A[i]);  
  max_min(A,6);//调用函数喽
  printf("max=%d, min=%d\n \n",A[0],A[5]);   
 }

运用场景就是,适用于多个返回值的数据类型一致的情况。

传递结构体指针

如果我们编写的多个返回值的C函数返回的数据类型不一样,我们可以通过定义全局变量,也可以通过考虑把要求返回的数值定义为一个结构体,然后同样以传递结构体指针的方式把结构体的指针传递给形参结构体指针,那么函数中对结构体修改就是对实参结构体的修改,函数被调用后获取的实参的结构体成员就是函数的多个返回值
当函数要求返回的多个值是相互联系的或者返回的多个值数据类型不一致时可以采用该方法。
感恩友友,一键三联支持下吧😍

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:08:08  更:2022-04-01 23:09:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:30:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码