[C++]03.数组与函数

news/2024/4/18 22:40:33/

03.数组与函数

  • 一.数组
    • 1.一维数组
    • 2.二维数组
  • 二.函数
    • 1.函数的定义
    • 2.函数的调用
    • 3.值传递
    • 4.函数的声明
    • 5.函数的分文件编写

一.数组

  • 数组是相同数据类型的一个结合
  • 数组是有连续的内存位置组成的

1.一维数组

  • 一维数组一共有三种定义方式:
    数据类型 数组名[数组长度];
    数据类型 数组名[数组长度] = {值1, 值2, ...};
    数据类型 数组名[] = {值1, 值2, ...};

  • 一维数组名称的用途
    可以统计整个数组在内存当中的长度sizeof(数组名)
    可以获取数组在内存中的首地址cout << 数组名<<endl;

#include <iostream>
using namespace std;int main() {int arr[5] = { 1, 2, 3, 4, 5 };// int在内存中占4字节,整个数组在内存中占20个字节cout << sizeof(arr[0]) << endl;  // 4个字节cout << sizeof(arr) << endl;  // 20个字节//数组长度除以类型长度,能得到数组的个数cout << (sizeof(arr) / sizeof(arr[0])) << endl;  // 5个元素// 直接输出数组能看到首地址cout << (int)arr << endl;  // 数组首地址cout << (int)&arr[0] << endl;  // 数组首地址cout << (int)&arr[1] << endl;  // 第二个元素的地址,和第一个元素相差4system("pause");return 0;
}

案例练习

#include <iostream>
using namespace std;int main() {//找出5只小猪中最重的一只int pigs[5] = { 415, 467, 445, 432, 413 };int max = 0;for (int i = 0; i < sizeof(pigs) / sizeof(pigs[0]); i++) {max = max > pigs[i] ? max : pigs[i]; // 擂台法}cout << "最重的小猪体重为: " << max << endl;// 将下列数组的元素逆置int arr[5] = { 1, 2, 3, 4, 5 };int start = 0;int end = size(arr) - 1;while (start < end) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;start++;end--;}// 输出for (int i = 0; i < size(arr); i++) {cout << arr[i] << "  ";}cout << endl;system("pause");return 0;
}
  • 冒泡排序
    较为常用的排序算法,对组内的元素进行排序
    1.比较相邻的元素,如果第一个比第二个大则进行交换
    2.对每一组元素做同样的工作,执行完毕后找到一个最大值
    3.重复以上步骤,每次比较的次数-1,直到不需要比较

案例:

	int arr[] = { 4, 2, 8, 0, 5, 7, 1, 3, 9, 6 };for (int i = 1; i < size(arr) - 1; i++) { // 排序总次数=元素个数 - 1for (int j = 0; j < size(arr) - i; j++) { // 每轮对比次数=元素个数-排序轮数-1if (arr[j] < arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}

2.二维数组

  • 二维数组是数组的,数组,新增了一个维度

  • 四种定义方式
    1.数据类型 数组名[行数][列数];
    2.数据类型 数组名[行数][列数] = {{数据01, ...}, {数据11, ...}, {数据nn, ...}};
    3.数据类型 数组名[行数][列数] = {数据1, 数据2, ...};
    4.数据类型 数组名[][列数] = {数据1, 数据2, ...};

  • 二位数组的名称
    查看二维数组的内存空间sizeof(二维数组名)
    查看二维数组的首地址

案例练习:

	/*|语文|数学|英语张三| 100| 99 | 98李四| 90 | 92 | 91王五| 88 | 99 | 88*/string names[3] = { "张三", "李四", "王五" };int score[3][3] = {{100, 99, 98},{90, 92, 91},{88, 99, 88}};for (int i = 0; i < size(score); i++) {int sum = 0;for (int j = 0; j < size(score[0]); j++) {sum += score[i][j];}cout << names[i] << "同学总分为: " << sum << endl;}

二.函数

  • 将一段代码封装起来,减少重复的代码, 将一个复杂程序拆分成若干个块, 每一块执行特定的功能

1.函数的定义

  • 定义一个函数一般有5个步骤
    1.返回值类型
    2.函数名
    3.参数列表
    4.函数体语句
    5.return 返回值
返回值类型 函数名 (形参列表) {函数体语句;return 返回值;
}

实现一个函数,计算两个整数相加的结果并返回

#include <iostream>
using namespace std;int addInt(int num1, int num2) {return num1 + num2;
}int main() {// 实现一个两数相加的函数cout << addInt(3, 4) << endl;system("pause");return 0;
}

2.函数的调用

  • 语法:函数名(实参列表);
#include <iostream>
using namespace std;int addInt(int num1, int num2) { // 定义函数的形参列表return num1 + num2;
}int main() {int a = 3;int b = 4;// 实现一个两数相加的函数int result = addInt(a, b); //传入的实参列表cout << result << endl;system("pause");return 0;
}

3.值传递

  • 函数调用时,实参的值会传入给形参, 但是如果传入后形参发生改变,是不会对实参造成影响的

4.函数的声明

  • 作用告诉编译器函数名称以及如何调用函数。函数的实际主体可以单独定义。
  • 函数可以被声明多次,但是函数的定义只有一次。
    作用:可以利用函数声明提前告诉这个函数的存在,这样函数卸载main函数后边也是可以的
// 声明可以有很多次
int max(int a, int b);
int max(int a, int b);
// 定义
int max(int a, int b) {return a > b ? a : b;
}

5.函数的分文件编写

  • 函数分文件编写之后,可以使代码结构更加的清晰
  • 分文件编写的四个步骤:
    1.创建后缀名为.h的头文件
    2.创建后缀名为.cpp的源文件
    3.在头文件中写函数声明
    4.在源文件中写函数定义

示例

//max.h文件
#include <iostream>
using namespace std;// 比大小函数声明
int max(int a, int b);
// max.cpp文件
#include "max.h"
// cpp文件定义函数
int max(int a, int b) {return a > b ? a : b;
}
// 在引用时只需要引用.h头文件即可
#include "max.h"int main() {int a = max(5, 6);cout << a << endl;system("pause");return 0;
}

学习笔记与课程计划
B站视频链接


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

相关文章

【高危】Microsoft Office Visio 远程执行代码漏洞

漏洞描述 Microsoft Office Visio 是微软公司开发的一款流程图和矢量图绘制工具。 Microsoft Office Visio 受影响版本中&#xff0c;当解析攻击者恶意制作的Visio文件时&#xff0c;攻击者可以在应用程序上下文执行任意代码。 漏洞名称Microsoft Office Visio 远程执行代码…

windos wsl2 docker unix:///var/run/docker.sock

解决方案 问题如下 rootDESKTOP-VM0J0I4:~# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?启动下docker sudo service docker startcsdn 等风来不如迎风去 htp://t.csdn.cn/Gh365

List和数组互转方法以及踩坑点

一、数组转List 1. 使用for循环逐个添加 String[] array {"A", "B", "C"}; List<String> list new ArrayList<>(); for (String element : array) {list.add(element); }2. 使用Arrays.asList(arr) String[] array {"A&q…

推荐算法知识

有志者&#xff0c;事竟成 1. 联盟的含义 2. Attention 3. Transformer 4. Learning to rank的三种方式 1. point-wise 2. pair-wise 3. list-wise 5. 推荐系统中的校准&#xff08;如保序回归等&#xff09; 6. 推荐系统中的偏差与处理&#xff08;如位置偏差等&#xff09…

ApplicationContextInitializer

目录 在何处执行&#xff1f;何时初始化&#xff1f;自己写一个ApplicationContextInitializer 那这个类的设计具体有什么作用呢&#xff1f;&#xff1f;1. DelegatingApplicationContextInitializer2. SharedMetadataReaderFactoryContextInitializer3. ContextIdApplication…

Android模板设计模式之 - 构建整个应用的BaseActivity

1. 模式介绍 模式的定义 定义一个操作中的算法的框架&#xff0c;而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模式的使用场景 1.多个子类有公有的方法&#xff0c;并且逻辑基本相同时。 2.重要、复杂的算法&#xff0c;可…

Windows 7 CDC 串口驱动,GD32

Windows 7 自带 CDC 串口类设备的驱动程序文件 usbser.sys&#xff0c;所缺的是驱动配置文件 usbser.inf 文件&#xff0c;将 Windows 10 的 usbser.inf 文件拷贝到 Windows 7&#xff0c;注释掉 SourceDisksNames 和 SourceDisksFiles 部分就可以作为 Windows 7 的 CDC 串口类…

恒运资本:股票印花税下降有什么影响?什么原因导致下降?

在进行股票教育过程中是需求收取必定的手续费的&#xff0c;比如说买卖佣钱、印花税、过户费等等。那么股票印花税下降有什么影响&#xff1f;什么原因导致下降&#xff1f;下面就由恒运资本为大家剖析&#xff1a; 股票印花税下降有什么影响&#xff1f; 1、对于企业&#xf…

日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理

日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理 目录 日常工具 之 一些 / 方便好用 / 免费 / 在线 / 工具整理 1、在线Json &#xff0c;可以在线进行json 格式验证&#xff0c;解析转义等操作 2、Gif动图分解&#xff0c;在线把 gif 图分解成一张张单图 3、在线P…

多进程并发服务器

文章目录 思路问题多进程并发回环服务器代码客户端代码 思路 每当一个客户端连接服务器后&#xff0c;创建一个子进程负责与该客户端通信&#xff0c;客户端断开连接之后&#xff0c;服务器回收子进程资源。 问题 问题1&#xff1a;父进程阻塞在等待连接(accept())处&#xf…

考研C语言进阶题库——更新26-30题

目录 26.一个正整数&#xff0c;如果等于组成它的各个数字的阶数之和&#xff0c;该整数称为阶乘合数&#xff0c;例如1451阶加四阶加五阶&#xff0c;则145是一个三位阶乘合数&#xff0c;输入一个数&#xff0c;问共有多少个阶乘合数&#xff1f;(十万之内) 27.与2相关的数…

前端先行模拟接口(mock+expres+json)

目录 mock模拟数据&#xff1a;data/static.js 路由&#xff1a;index.js 服务器&#xff1a;server.js yarn /node 启动服务器&#xff1a;yarn start 客户端&#xff1a;修改代理路径(修改设置后都要重启才生效) 示例 后端框架express构建服务器 前端发起请求 静态数…

【EI/SCOPUS检索】第三届新媒体发展与现代化教育国际学术会议(NMDME 2023)

第三届新媒体发展与现代化教育国际学术会议&#xff08;NMDME 2023&#xff09; The 3rd International Conference on New Media Development and Modernized Education 第三届新媒体发展与现代化教育国际学术会议(NMDME 2023)将于2023年10月13-15日于西安召开。会议旨在为新…

Java字符数组转字符串

Java字符数组转字符串 在日常开发的过程&#xff0c;我们常见的会用到字符串转字符数组&#xff0c;或者字符串数组转字符串等等&#xff0c;有时就会因为一个方法的遗忘&#xff0c;导致耽误很多时间或者代码较为冗余。 重点&#xff1a; Sting.join(CharSequence delimiter…

高忆管理:股票集合竞价?

股票集合竞价&#xff08;英文缩写为“SPAC”&#xff09;是股票商场开市前最终一个阶段&#xff0c;也被称为“开盘竞价”。在这个阶段&#xff0c;买卖双方能够提交订单&#xff0c;而且体系将会平衡对买卖盘进行撮合&#xff0c;以确认股票开盘价。这个阶段通常会在上午九点…

AMBA总线(AHB)

1.AMBA AMBA(Advanced Microcontroller Bus Architecture)高级微控制器总线结构&#xff0c;定义了用于设计高性能嵌入式微控制器的片上通信标准。   AMBA规范中定义了三种不同的总线&#xff1a;   &#xff08;1&#xff09;高级高性能总线&#xff08;Advanced High-per…

Al Go: 蒙特卡洛树搜索(MCTS)简介

目录 1. 前言 1.1 Minimax 1.2 剪枝 1.3 蒙特卡洛树搜索 1.4 为什么随机走子会可行呢&#xff1f; 2. vanilla Monte Carlo tree search 3. UCT-based trade-off between exploitation and exploration 4. MCTS基本算法流程 5. Efficiency Through Expert Policies 6…

音视频--视频数据传输

参考文献 H264码流RTP封装方式详解&#xff1a;https://blog.csdn.net/water1209/article/details/126019272H264视频传输、编解码----RTP协议对H264数据帧拆包、打包、解包过程&#xff1a; https://blog.csdn.net/wujian946110509/article/details/79129338H264之NALU解析&a…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

函数的声明和定义

1、函数声明 //告诉编译器有一个函数叫什么&#xff0c;参数是什么&#xff0c;返回类型是什么。但是具体是不是存在&#xff0c;函数声明决定不了。 //函数的声明一般出现在函数的使用之前。要满足先声明后使用。 //函数的声明一般要放在头文件中的。 2、函数的定义 //函数…