当前位置: 首页 > news >正文

C++编程学习(第16天)

函数的分类

从用户使用角度来看,函数分系统函数和自定义函数。

从函数形式来看,函数分无参函数和有参函数。

无参函数

在调用函数时不必给出参数。在调用无参函数时,主调函数并不将数据传送给被调函数,一般用来执行一组固定的操作。无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。

有参函数

在调用函数时,要给出参数,在主函数和被调用函数之间有数据传递,也就是说,主调函数将数据传给被调函数使用,被调函数可以带回函数值供主调函数使用,也可以不带回函数值,此时函数类型为void。

定义函数的一般形式

定义无参函数的一般形式

定义无参函数的一般形式为:

类型名 函数名([void]){声明部分执行语句}

在C语言中,定义无参函数时函数首部的括号内可以不写void。C++保留了这一用法,以使过去写的C程序能在C++的环境中编译和运行,为了使程序清晰醒目,一般不省略括号内的void。

定义有参函数的一般形式

定义有参函数的一般形式为

类型名 函数名(形式参数表列){声明部分执行语句}

如:

int max(int x,int y)    //函数首部,函数值为整型,有两个整型形参
{int z;                //函数体声明部分
z=x>y?x:y;            //将x和y的大者的值赋给整型变量z
return(z);            //将z的值作为函数值返回调用点
}

函数参数和函数的值

形式参数和实际参数

在调用函数时,大多数情况下,函数是带参数的。主调函数和被调用函数之间有数据传递关系。

在定义函数时函数名后面括号中的变量名称为形式参数,简称形参,在主调用函数中调用一个函数时,函数名后面括号中的参数称为实际参数,简称实参。

如:求两个整数中的大者。

#include <iostream>
using namespace std;int max(int a, int b)
{int t;t = (a > b) ? a : b;return (t);
}int main()
{int x, y, z;cout << "请输入两个整数:";cin >> x >> y;z = max(x, y);cout << "大者为:" << z << endl;return 0;
}

结果如下:

1、在定义函数时指定的形参,在未出现函数调用时,他们并不占内存中的存储单元,因此称他们为形式参数或虚拟参数,表示他们并不是实际存在的数据,只有在发生函数调用时,函数中的形参才会被分配内存单元,以便接收从实参传来的数据。在调用函数结束后,形参所含的内存单元也被释放。

2、实参的形式可以是常量、变量或表达式。

3、在定义函数时,必须在函数首部指定形参的类型。

4、形参与实参的类型应相同或赋值兼容。

5、实参变量对形参变量的数据传递是值传递,即单向传递,只由实参传给形参,而不能由形参传回给实参。

6、在调用函数时,编译系统临时给形参分配存储单元,实参单元与形参单元是不同的单元。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。

函数的返回值

通常,希望通过函数的调用使主调函数能得到一个确定的函数值,这就是函数的返回值。

1、函数的返回值是通过函数中的return语句获得的,return语句将被调用函数中的一个确定值带回主调函数中去。

2、如果需要从被调用函数带回一个函数值,被调用函数中必须包含return语句,如果不需要从被调用函数带回函数值,则可以不要return语句。

3、一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。

4、return语句后面的括号可以要,也可以不要,return后面的值可以是一个表达式。

5、函数值的类型。既然函数有返回值,这个值当然应属于某一个确定的类型,应当在定义函数时指定函数值的类型。

6、如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准,即函数类型决定返回值的类型,对数值型函数,可以自动进行类型转换。

http://www.dtcms.com/a/300356.html

相关文章:

  • 【RK3568 PWM 子系统(SG90)驱动开发详解】
  • JavaScript手录06-函数
  • Linux——线程同步
  • KubeKey安装KubeSphere、部署应用实践问题总结
  • 立式加工中心X-Y轴传动机械结构设“cad【6张】三维图+设计说明书
  • 计算机中的单位(详细易懂)
  • 计算机结构-逻辑门、存储器、内存、加法器、锁存器、程序计数器
  • 斐波那契数列加强版 快速矩阵幂
  • 53. 最大子数组和
  • 组合问题(回溯算法)
  • Windows Server容器化应用的资源限制设置
  • 图书管理系统:一个功能完善的图书馆管理解决方案
  • 【C++篇】STL的关联容器:map和set(下篇):用一颗红黑树同时封装出map和set
  • CCFRec-人大高瓴-KDD2025-序列推荐中充分融合协同信息与语义信息
  • Item13:以对象管理资源
  • 人工智能论文辅导:Prompt Engineering(特征工程)
  • 倍思鹿数值仿真-实现各类提示、快捷键功能,提高工作效率
  • Android Jetpack 组件库 ->Jetpack Navigation (下)
  • 通过不同坐标系下的同一向量,求解旋转矩阵
  • 深度学习入门(2)
  • 实验-OSPF多区域
  • 告别Vite脚手架局限!MixOne Beta测试招募:你的需求,我们来实现
  • 【Java】基础概念-构造函数详解
  • [Python] -进阶理解7- Python中的内存管理机制简析
  • 基于springboot的在线数码商城/在线电子产品商品销售系统的设计与实现
  • (二)使用 LangChain 从零开始构建 RAG 系统 RAG From Scratch
  • 7月26号打卡
  • Unity GenericMenu 类详解
  • 技术 — 资本双螺旋:AI 时代的投资浪潮与技术突破
  • 模型训练部署流程