【C++】课节笔记及梳理总结---EP5

news/2023/12/2 11:13:41

一、课节笔记

第四章 函数与预处理

Ⅰ、概述

 1.模块化程序设计
  (1)基本思想:将一个大程序按照功能分割成若干个小模块
  (2)开发方法:自上而下,逐步分解,分而治之
2.※ C++ 是模块化程序设计语言 ※

Ⅱ、定义函数的一般形式

 1.一般格式:

函数类型  函数名(形参类型说明表)
{
   说明部分
   语句部分
}

Ⅲ、函数参数和函数的值

 1.形式参数和实际参数
在这里插入图片描述
 2.函数返回值
  (1)返回语句:
  1)形式:return (表达式);(括号可省略)
  2)功能:是程序控制从被调用函数返回到调用函数之中,同时把返回值带给调用函数

Ⅳ、函数的调用

 1.函数调用一般格式

函数名([实参表列]);  注:(1)实参形参个数相等
如 c=max(a,b);     (2)实参表列可为表达式,则须注意运算顺序(从右向左)
             例:i=1
             max(i++,i++);max(++i,++i);
                  ∨ \vee          ∨ \vee
              max(2,1);    max(3,2);

 2.调用方式

  (1)函数语句  例:printstar();
  (2)函数表达式 例:m=max(a,b)*2;
  (3)函数参数  例:m=max(a,max(b,c));

 3.函数说明

 (1)函数要求:1)必须已经存在(已经声明)
        2)库函数:#include<··>
        3)用户自定义函数:函数类型说明
 (2)函数说明(一般形式):函数类型 函数名(形参类型[形参名],形参类型[形参名],···)

Ⅴ、函数的嵌套调用

  ※定义函数时不得嵌套※
  ※但可以嵌套调用函数※

Ⅵ、函数的递归调用

例1 求 n ! = { 1 , n = 0 n ( n − 1 ) ! , n > 0 n!=\left\{\begin{matrix}1 & ,n=0\\ n(n-1)!&,n>0 \end{matrix}\right. n!={1n(n1)!,n=0,n>0

作者之前写过一篇讲解通过函数的递归调用解决汉诺塔问题的博客,希望大家多多支持( •̀ ω •́ )✧
主要思想就是将问题通过类比,找到一个方法作为主要支架将其不断拆分为若干有限个小步骤,再通过每一个小步骤之间的顺序、运算结构来整合为所求问题。就如本题,我们想要求 n ! n! n!其实就是要求 n 与 ( n − 1 ) ! n与(n-1)! n(n1)!的积(当然n比较大),我们再将 ( n − 1 ) ! (n-1)! (n1)!化为 ( n − 1 ) (n-1) (n1) ( n − 2 ) ! (n-2)! (n2)!的积,如此下去 ∀ n ∈ N + \forall n\in N_{+} \; nN+都可以拆解为多个因子的因式,直到最后一个因子为0,结束递归即可

程序如下:

#include<iostream>
using namespace std;
int fac(int n)
{if (n == 0)return 1;elsereturn n * fac(n - 1);
}
int main()
{int n;cin>>n;cout << fac(n);return 0;
}

Ⅶ、局部变量与全局变量

 1.局部变量—内部变量
  Def.在函数内定义,只在本函数内有效
   注:(1)不同函数中同名变量占不同内存单元
     (2)形参属于局部变量
     (3)可在复合语句中定义有效变量
 2.全局变量—外部变量
  Def.在函数外定义,可为本文件中所有函数共用
   注(有效范围): (1)从定义函数的位置开始到本源文件结束
          (2)有extern说明的部分
          (3)有extern说明的其他源文件
          (4)若外部变量局部变量同名,则外部变量被屏蔽

Ⅷ、变量的存储类别

  1. 变量是对程序中数据的存储空间的抽象
  2. 属性:(1)数据类型:变量所持有的数据的性质(操作属性)
  3. 变量的存储类型(不同于数据类型)

auto- - -自动型  register- - -寄存器型  extern- - -外部型
static- - -静态型-----→(具有全局寿命和局部可见性)

Ⅸ、内部函数和外部函数

  1. 内部函数:函数只能被本文件中其他函数所调用
  2. 外部函数:函数能被其他文件调用

Ⅹ、预处理命令

  1. 作用:对源程序编译之前做一些处理,生成扩展C源程序
  2. 种类:①文件包含 #include
       ②宏定义 #define
       ③条件编译 #if...#else...#endif...
  3. 格式:(1)以#开头
       (2)占单独书写行
       (3)句尾不加;

二、梳理总结

 最近疫情严重,刚刚返乡,不觉间已经很久没有记录笔记。所有的考试也都推迟到下学期初,希望疫情早早结束,不再反复。后续笔记也会接连更新,预计还有四大章节的内容,之后会以每篇一章的长度进行更新。


http://www.ppmy.cn/news/131455.html

相关文章

USB Composite 组合设备之多路CDC实现

USB Composite 组合设备之多路CDC实现 USB复合设备与组合设备区别效果展示修改相关配置修改配置项修改设备描述符修改配置、接口、端点描述符接口修改FIFO配置 知识点FIFO分配 注意事项 USB复合设备与组合设备区别 其实多个接口组合在一起有2种情况 第一种叫做USB复合设备&…

Ep5 线性模型with Pytorch

1、流程 确定数据集、 设计模型(算出预测值)、 构建损失函数&#xff08;最终为一个标量值&#xff0c;只有标量才能用backward&#xff09;和优化器、 训练周期&#xff08;forward算loss&#xff0c;backward算grad&#xff0c;update更新wi&#xff09; 2、numpy的广播…

HBase Shell 常用命令练习

HBase Shell 常用命令练习 前言一、HBase Shell是什么&#xff1f;二、HBase Shell使用步骤1.启动HBase2.启用HBase Shell3.键入HBase Shell命令操作HBase 三、常用HBase Shell实例1.常用的HBase Shell命令2.一个运用上述命令的综合实例&#xff1a; 总结 前言 提示&#xff1…

侃侃算法EP5·二叉树及其遍历

1. 前言 这个板块旨在记录一些日常中或是面试中会问到的算法和数据结构相关的内容&#xff0c;更多是给自己总结和需要的人分享。在内容部分可能由于我的阅历和实战经历不足&#xff0c;会有忽视或是写错的点&#xff0c;还望轻喷。 2. 内容 关于什么是树、子树、根节点、叶…

ES6、ES7、ES8、ES9、ES10新特性及其兼容性

强烈推荐阅读一篇文章&#xff0c;也是自己为了做保存把地址贴到自己博客&#xff0c;大家一起学习&#xff1a; ECMAScript 6 入门教程——阮一峰 盘点ES7、ES8、ES9、ES10新特性

es_01

字段&#xff1a;等于一个属性 文档&#xff1a;行数据等于多个字段组成 映射&#xff1a;mapping表结构 索引&#xff1a;index 数据库 存文档 类型&#xff1a;忽略 正排索引&#xff1a; 需要按照key来搜索每个key下的value&#xff0c;要收到全部的数据&#xff0c;就要进…

es(八)

单字符串串多字段查询:Dis Max Query 想在百度搜索一个单字符 should是如何算分过程 查询 should 语句句中的两个查询加和两个查询的评分乘以匹配语句句的总数除以所有语句句的总数

JS高级+ES678

js高级 数据类型 基本(值)类型 Number: 任意数值String: 任意文本Boolean: true/falseundefined: undefinednull: null 对象(引用)类型 Object: 任意对象 主要用来包含无序复杂的数据Array: 特别的对象类型(下标/内部数据有序)Function: 特别的对象类型(可执行)&#xff0c;F…

阿里云ECS部署ES

背景 最近越来越多的公司把业务搬迁到云上&#xff0c;公司也有这个计划&#xff0c;自己抽时间在阿里云和Azure上做了一些小的尝试&#xff0c;现在把阿里云上部署ES和kibana记录下来。为以后做一个参考&#xff0c;也希望对其他人有帮助。 这里以阿里云为例&#xff0c;由于测…

ES-08-ElasticSearch数据分片(shard)

说明 ElasticSearch数据分片&#xff08;shard&#xff09;创建多分片索引、更改多分片索引副本分片数量、路由计算和分片控制官方文档&#xff1a;https://www.elastic.co/cn/ 核心概念 》什么是数据分片&#xff08;shard&#xff09;&#xff1f; 一个分片是一个底层的工…

ES-09-ElasticSearch分词器

说明 ElasticSearch分词器默认分词器&#xff08;标准分词器&#xff09;、ik分词器、ik分词器扩展字典自定义词语关键词&#xff1a;keyword、text、ik_max_word、ik_smart、词条、词典、倒排表官方文档&#xff1a;https://www.elastic.co/cn/ik分词器文档&#xff1a;https…

Elasticsearch8.0

Elastic 中国社区官方博客_CSDN博客-Elastic,Elasticsearch,Kibana领域博主Elastic 中国社区官方博客擅长Elastic,Elasticsearch,Kibana,等方面的知识https://elasticstack.blog.csdn.net/ ✅ 启动 elasticsearch # cd /usr/local/elastic/elasticsearch/ # ./bin/elasticsearc…

ES6/ES7/ES8/ES9/ES10

ES10 ES10 功能完全指南 好犯困啊 我来打打字 string.prototype.matchAll() ‘Hello’.match(‘l’) eg:判断字符串中存在几个某元素 yannanna’.match(/n/g).length 扁平化多维数组&#xff08;想不出啥时候会用到&#xff09; let array [1, 2, 3, 4, 5]; array.map(x &g…

ES

文章目录 1. 什么是ElasticSearch&#xff1f;为什么要使用Elasticsearch?——克服模糊查询的缺点、查询速度快2. ES中的倒排索引是什么&#xff1f;——词→文章3. ES是如何实现master选举的&#xff1f;——各节点分别排序投票4. 如何解决ES集群的脑裂问题——增大最少候选节…

es 客户端

ES客户端&#xff1a;Elasticsearch Clients 语言无关性 Java REST ClientJava APIPython APIGo API.Net APIPHP APIJavaScripts APIRuby APIPerl APIElandRustCommunity Contributed Clients Java API 生命周期&#xff08;生卒年&#xff1a;ES 0.9 - ES 7.x&#xff09;…

ES7,ES8,ES10新特性

ES7 ES7在ES6的基础上增加了三项内容 求幂运算符 ** console.log(3 ** 2 ) // 9 Array.prototype.includes()方法 includes()的作用是查找一个值在不在数组中&#xff0c;接受两个参数&#xff1a;搜索值和搜索的开始索引。如果没有传递参数默认的索引是0 // 下面的这两种方…

ES7+ES8

撰文为何 身为一个前端开发者&#xff0c;ECMAScript(以下简称ES)早已广泛应用在我们的工作当中。了解ECMA机构流程的人应该知道&#xff0c;标准委员会会在每年的6月份正式发布一次规范的修订&#xff0c;而这次的发布也将作为当年的正式版本。以后的改动&#xff0c;都会基于…

elasticsearch系列七:ES Java客户端-Elasticsearch Java client

一、ES Client 简介 1. ES是一个服务&#xff0c;采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API &#xff0c;端口 9200 这种连接方式对应于架构图中的RESTful style API这一层&#xff0c;这种客户端的连接方式是RESTful风格的&#xff0c;使用http…

【阅读理解】ES7/ES8/ES9/ES10新特性

今天阅读了一篇咨询&#xff0c;有关于ES7-ES10 &#xff08;ES2016-2019&#xff09;&#xff0c;ES6后新出的特性比较频繁。 首先附上思维导图 下面都是我阅读咨询后理解而编写的&#xff1a; ES7&#xff1a; 1.Array.prototype.includes() 这个方法可以判断一个元素…

ES7.8 安装

环境 CentOS7.4 elasticsearch-7.8.0 jdk8 下载Linux版本的elasticsearch安装包 https://www.elastic.co/cn/downloads/past-releases 安装集群在每个节点上的安装步骤基本上都是一样的&#xff0c;我以一个节点为例 下载完成之后通过ftp上传到linux服务器指定目录下&am…
最新文章