已更新!c++第四章知识点合集(自定义函数的格式和使用方法详解, #include,函数的嵌套 递归,局部变量与全局变量的区别等等)

news2024/9/21 22:05:55

   c++知识点合集已经完成欢迎前往主页查看,点点赞点点关注不迷路哦

点我进入c++第一章知识点合集

MYSQL知识点持续更新中

MYSQL第一章节DDL数据定义语言的操作----点我进入

MYSQL第二章节DDL-数据库操作语言 DQL-数据查询语言----点我进入

MYSQL-第三章节DCL-管理用户,控制权限----点我进入

MYSQL-第四章节常用函数说明----点我进入

第四章知识点合集


目录

第四章知识点合集

自定义函数

定义函数的方法

定义一个无参函数

定义一个有参函数

函数结构:

声名部分包括:

定义空函数

函数的调用形式

3.函数参数

形参与实参

#include指令

函数的嵌套 递归

函数的嵌套调用

局部变量与全局变量

局部变量

全局变量

例子:


自定义函数

定义一个函数应当包括以下内容

  1. 指定函数的名字,以便按函数名字进行调用(尽量做到见名知意)
  2. 指定函数的类型,即函数的返回值
  3. 指定函数的参数名字和类型,以便在调用函数时向他们传递数据。对无参函数不需要这一项

定义函数的方法

  1. 定义一个无参函数

函数结构:

函数类型 函数名()

{

声明部分

语句部分

}

函数类型 函数名(void)

{

声明部分

语句部分

}

注意:

无参函数:函数名后面的括号为空没有任何东西

函数名后面括号内的void表示空也就是表示函数没有参数

在定义函数时要用类型名,指定函数值的类型,即指定函数值带回来值的类型

  1. 定义一个有参函数

函数结构:

函数类型 函数名(参数类型1 参数名1,  …, 参数类型n 参数名n)

{

声明部分

语句部分

}

声名部分包括:

  1. 对函数中要用到的变量进行定义
  2. 对要调用的函数进行声名(怎样声名一个函数见后面)

3. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。

4. 函数的声明一般出现在函数的使用之前。要满足 先声明后使用 。

5. 函数的声明一般要放在头文件中。

注意:

编译系统在检查函数调用时要求函数名、函数类型、参数个数和参数顺序必须与函数声明一致,实参类型必须与形参类型相同或赋值兼容。由于不检查参数名,因此在函数声明时,形参名可以省略。例如:  int  add( int  ,int  );

例子

int Max(int x, int y)

{

int z;            //函数体中的声明部分

z = x>y ? x:y;    //下面是语句部分

return z;       //将z的值作为函数函数值带回主调函数

}

注意:

  1. 该函数的作用是求出最大值将最大值的值以整型的结果进行返回
  2. 在调用此函数时主调函数将实际的值传递给被调函数中的形式参数x和y进行运算。

  1. 定义空函数

函数结构

函数类型 函数名()

{

}

例子:

Void dunmmy()

{

}

注意:

该函数体为空,调用此函数时无需做任何事情,没有什么实际作用。

函数的调用形式

  1. 函数调用语句

例子:

void  printf()

{

printf(“我是函数调用语句的方法”)

}

int main()

{

void  printf(); //函数的声名

printf();       //函数的调用

}

  1. 函数表达式

将被调函数成为表达式的一部分

例子:

int  max(int x,int y)

{

int z ;  

z = x>y ? x:y;

return z;

}

Int main()

{

Int c = 2*max(2,3);

printf(%d,c);       //结果为:6

      

            

}

3.函数参数

将被调函数的结果成为函数参数的一部分

例子:

int  max(int x,int y)

{

int z ;  

z = x>y ? x:y;

return z;

}

Int main()

{

Int c = max(7,max(5,6));

printf(%d,c);          //结果为:7

}          

形参与实参

形参:形式参数(定义一个函数时括号里面的变量名称为形式参数)

实参:实际参数(在主调函数中调用一个函数时函数名括号里面的的变量名为实际参数)

例子:

int  max(int x,int y) // x , y 为形式参数

{

int z ;  

z = x>y ? x:y;

return z;

}

int main()

{

Int c = 2*max(2,3);  // 2 , 3 位实际参数

printf(%d,c);  

      

 }

#include指令

#include指令是一种编译预处理指令,也就是源程序在被编译之前编译器执行的操作。
作用:在源程序被编译之前,向源程序中复制头文件文本内容
头文件:被包含在其他文件的起始处的文件,有一些常用的功能模块

例子:

若在主函数中需要用到数学函数的话则需要在本文件开头写上

#include<math.h>

函数的嵌套 递归

函数的递归调用:在函数的嵌套调用中,如果函数嵌套调用的是自己,这就是函数的递归调用

在调用fun函数时,又要调用fun函数,这就是fun函数的递归调用。但是,这里的fun函数的调用是无终止的,故函数的递归调用必须要设置终止条件,通常在函数定义时通过if语句控制

递归求和例题:递归求1-100之和

int RecursionFunc(int num)    //1-100和

{

    if(num == 0)            //中止条件

        return 0;

    else

        return num + RecursionFunc(num - 1);

}

函数的嵌套调用

函数的定义是独立的,在一个函数中不能嵌套定义另外一个函数。但是,函数可以嵌套调用,即可以在一个函数中调用另一个函数。

例子:

void dog()

{

printf(“我会跑”);

}

void fish ()

{

printf(“我会飞”);

}

void pepole  ()

{

printf(“我会唱,跳,rap,和篮球”);

}

void choice (char ch)

{

switch(ch)

case p:void pepole();break;

case d:void dog();break;

case f:void fish ();break;

}

int main()

{

void choice ();  //进行声名

char ch;

printf(“请输入p,f,d,进行选择”);

ch=getchar();

void choice (ch);

}

局部变量与全局变量

每个变量都有属于它的作用域,就是这些变量在什么范围内有效; 我们按照变量的作用域范围可以把变量划分为局部变量和全局变量;

局部变量

局部变量出现在三种地方:

  1. 在函数的开头定义的变量
    (2)在函数内的复合语句内定义的变量
    (3)形式参数

注意:

在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量;

在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量;

还有就是函数的形参,只在该函数内有效;

例子

变量sum 定义在函数的开头

int fun(int x,int y)

{

int sum;

sum=x+y;

}

变量sum 定义在函数的开头,所以它是局部变量,它的作用域就是这个函数,出了这个函数,就会自动被销毁,无法被别处引用;同时 变量 x 和 y作为形参也是局部变量;

复合语句中的局部变量:

A:

If(1)

{

int a;

cout<<a;

}

B:

If(1)

{

Int a=3;

}

cout<<a;

注意

A:程序可以正常运行输出3,而B程序不可以正常运行 int a 的使用范围只存在于复合语句中

全局变量

在函数外部定义的变量就是全局变量或外部变量全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束

例子:

Int a=5,b=3; //定义一个全局变量a,b

Int main()                     

{

Cout<<a<<endl<<b;                   输出结果:

Int max(int x,int y);                               5

Int max(int a,int b)                                3

}                                                              5

Int max(int x,int y)

{

Int z;

z=x>y ? x:y;   return z;  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

库函数qsort的使用

在排序时&#xff0c;我们通常写的函数只能排一种固定的类型&#xff0c;那有没有一种方法可以用来对所有的数据类型&#xff0c;进行排序呢&#xff1f;库函数中的qsort函数就可以实现这种排序。 首先qsort的函数参数有四个&#xff0c;第一个是数组的起始地址(即数组名)&…

【ML】cheatsheet

LR 原理与面试题目DT, Adaboost, GBDT, xgboost 原理 细节 与 例子 https://www.cnblogs.com/createMoMo/p/12635709.html xgboost挺详细的算法原理与例子 https://zhuanlan.zhihu.com/p/660468945 着重lightgbm就xgboost的改善方向 https://zhuanlan.zhihu.com/p/366952043机器…

什么是卷积神经网络?解决了什么问题?

什么是卷积神经网络&#xff1f; 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度神经网络模型&#xff0c;主要用于图像识别、语音识别和自然语言处理等任务。它通过卷积层、池化层和全连接层来实现特征提取和分类。 解决了什么问…

pycharm使用Git拉取最新代码(配置了远程服务器)

首先分享一下如何在pycharm设置代理&#xff08;毕竟pull代码往往是从GitHub上&#xff09;。因为即便本地开启了代理&#xff0c;PyCharm并不会自动使用它。需要在PyCharm的设置中手动配置代理。 下面是在PyCharm中设置代理的步骤&#xff1a; 主菜单中选择File > Settin…

Node学习笔记之MySQL基本使用

使用 SQL 管理数据库 其实写接口简单来说就是操作数据库数据&#xff0c;所以我们需要学会数据库的增、删、查、改等基本操作 1. 什么是 SQL SQL&#xff08;英文全称&#xff1a;Structured Query Language&#xff09;是结构化查询语言&#xff0c;专门用来访问和处理数据…

Kubernetes技术与架构-网络 1

基于OSI网络模型&#xff0c;Kubernetes集群的网络策略包括7层负载均衡的网关路由策略&#xff0c;以及4层3层的网络IP地址策略&#xff0c;这些网络策略是保证Kubernetes集群内Pod之间的网络访问的互联互通&#xff0c;本文主要描述Kubernetes集群的网络策略的基本使用方式。 …

基于nodejs+vue旅行社网站系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

Linux笔记之diff和vimdiff

Linux笔记之diff和vimdiff code review! 文章目录 Linux笔记之diff和vimdiff一.diff1.1.使用diff比较文件夹1.2.使用diff比较文件1.4.colordiff——带颜色输出差异 二.vimdiff2.1.vimdiff颜色差异2.2.vimfiff调整栏宽2.3.修改颜色变谈&#xff0c;使代码可以看清楚2.4.vimdif…

[AUTOSAR][诊断管理][ECU][$14] 清除诊断相关信息

文章目录 一、简介(1)应用场景(2)清除DTC原理(3) 请求格式二、示例代码(1) 14_cls_dtc_info.c三、 常见bug大揭秘一、简介 根据ISO14119-1标准中所述,诊断服务14主要用于Client向Server(ECU)请求清除诊断相关信息。 (1)应用场景 一般而言,14诊断服务,主要应用场景…

面向对象(基础)特征一:封装性(encapsulation)

文章目录 一、介绍&#xff08;1&#xff09;封装性&#xff08;2&#xff09;权限修饰符 二、案例&#xff08;1&#xff09;案例1 三、练习&#xff08;1&#xff09;练习1&#xff08;2&#xff09;练习2&#xff08;3&#xff09;练习3&#xff08;4&#xff09;练习4 面向…

【2023年11月第四版教材】软考高项极限冲刺篇笔记(3)

8 成本管理 成本类型:可变成本、固定成本、直接成本、间接成本、机会成本、沉没成本 应急储备:成本基准内 管理成本:成本基准外 进度偏差:SV,SPI 成本管理主要是规划和控制 成本估算 类比估算 参数估算 自上而下估算 三点估算 备选方案分析 储备分析 质量成本 总资…

strstr函数和strtok函数

文章目录 strstr函数函数使用函数模拟实现strtok函数 strstr函数 参数为两个字符串的地址&#xff0c;在str1中找str2不包括结束符。 函数使用 #include<stdio.h> #include<string.h>int main() {char* str1 "abcdeffgmnlo";char* str2 "de"…

《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

“言为心声,语为心境”&#xff0c;语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本&#xff0c;然后通过自然语言处理技术对文本进行分析和理解&#xff0c;最终…

TP-LINK XDR6088 WiFi6路由器 简单开箱评测

TL-XDR6088易展版AX6000双频WiFi6路由器 简单开箱测评&#xff0c;双2.5G网口&#xff0c;双频8流&#xff0c;8颗FEM&#xff0c;支持Docker。 TP-LINK XDR5470 WiFi6路由器 简单开箱评测&#xff1a;https://blog.zeruns.tech/archives/725.html TP-LINK XDR3040 WiFi6路由…

WinMIPS64汇编指令详解

目录 MIPS指令R I J三种格式 MIPS五种寻址方式 立即数寻址 寄存器寻址 基址寻址 PC相对寻址 伪直接寻址 WinMIPS64汇编指令 助记 从内存中加载数据 lb lbu lh lhu lw lwu ld l.d lui 存储数据到内存 sb sh sw sd s.d 算术运算 daddi daddui dadd…

C++笔记之vector的初始化以及assign()方法

C笔记之vector的初始化以及assign()方法 —— 2023年4月15日 上海 code review 文章目录 C笔记之vector的初始化以及assign()方法代码——实践出真知0. 空的vector1. 花括号(initializer_list)——最推荐的初始化方法2. 花括号3. 圆括号花括号4. 圆括号5. 圆括号6. 指针花括号7…

我做不到受每个人喜欢

我做不到受每个人喜欢 我想描述一下昨天发生争吵后我个人的观点&#xff0c;希望能够重新呈现出一种积极的态度。 首先&#xff0c;让我简要梳理一下事件的经过&#xff0c;当天我像往常一样去另一个宿舍找人聊天&#xff0c;可能因为说话声音有点大&#xff0c;坐在我后面的那…

GUI设计——PyQt5快速入门

一、学习目标 了解有关GUI界面设计的基本语法能够编写简单的界面设计程序 二、PyQt5 安装与环境配置 首先&#xff0c;本人通过网上的教程&#xff0c;在Index of / (qt.io)官网上下载好了 Qt Designer 和 Qt Creator 。本人下载的版本为 5.14。随后&#xff0c;通过网络的资源…

【Spring Cloud Alibaba】seata分布式事务官方入门案例(实战版)

文章目录 1. 业务介绍1.1. 用例1.2. 架构图1.3. 3个服务的代码及业务逻辑&#xff08;略&#xff09; 2. SEATA 的分布式交易解决方案3. 由Dubbo SEATA提供支持的示例&#xff08;实战&#xff09;3.1. 步骤 1&#xff1a;建立数据库&#xff0c;如seata数据库3.2. 步骤 2&…

OSPF基础实验

一、实验拓扑 二、实验要求 1、按照图示配置 IP 地址 2、R1&#xff0c;R2&#xff0c;R3 运行 OSPF 使内网互通&#xff0c;所有接口(公网接口除外)全部宣告进 Area 0; 要求使用环回口作为 Router-id 3、业务网段不允许出现协议报文 4、R5 模拟互联网&#xff0c;内网通过…