关键词:
5 数组
5.1 概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
特点1: 数组中的每个数据元素都是相同的数据类型
特点2: 数组是由连续的内存位置组成的
5.2 一维数组
5.2.1 一维数组定义方式
一维数组定义的三种方式:
数据类型 数组名[ 数组长度 ];
数据类型 数组名[ 数组长度 ] = 值1,值2 ...;
数据类型 数组名[ ] = 值1,值2 ...;
示例:
#include <iostream>
using namespace std;
void test01()
//定义方式1
int score[10];
//赋值
score[0] = 10;
score[1] = 20;
score[2] = 30;
//输出
cout << score[0] << endl;
cout << score[1] << endl;
cout << score[2] << endl;
cout << "----------"<<endl;
//第二种定义方式
int score2[5] = 50,40,30,20,10;
//利用循环输出
for (int i = 0; i < 5; i++)
cout << score2[i] << endl;
cout << "----------" << endl;
//定义方式3
int score3[] = 50,40,30,20,10 ;
for (int i = 0; i < 5; i++)
cout << score3[i] << endl;
int main()
test01();
system("pause");
return 0;
总结1:数组名的命名规范与变量名命名规范一致,不要和变量重名
总结2:数组中下标是从0开始索引
5.2.2 一维数组数组名
一维数组名称的用途:
- 可以统计整个数组在内存中的长度
- 可以获取数组在内存中的首地址
示例:
#include <iostream>
using namespace std;
void test01()
int arr[10] = 1,2,3,4,5,6,7,8,9,10 ;
cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;
cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;
cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "数组首地址为: " << (int)arr << endl;
cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl;
cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl;
int main()
test01();
system("pause");
return 0;
总结1:直接打印数组名,可以查看数组所占内存的首地址
总结2:对数组名进行sizeof,可以获取整个数组占内存空间的大小
5.2.3 冒泡排序
作用: 最常用的排序算法,对数组内元素进行排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个
- 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
- 重复以上的步骤,每次比较次数-1,直到不需要比较
示例: 将数组进行升序排序
#include <iostream>
using namespace std;
void test01()
int arr[10] = 6,1,2,8,0,5,6,3,9,4 ;
for (int i = 0; i < 10 - 1; i++)
for (int j = 0; j < 10 - 1 - i; j++)
if (arr[j] > arr[j + 1])
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
for (int i = 0; i < 10; i++)
cout << arr[i] << " ";
cout << endl;
int main()
test01();
system("pause");
return 0;
5.3 二维数组
二维数组就是在一维数组上,多加一个维度
5.3.1 二维数组定义方式
二维数组定义的四种方式:
数据类型 数组名[ 行数 ][ 列数 ];
数据类型 数组名[ 行数 ][ 列数 ] = 数据1,数据2 ,数据3,数据4 ;
数据类型 数组名[ 行数 ][ 列数 ] = 数据1,数据2,数据3,数据4;
数据类型 数组名[ ][ 列数 ] = 数据1,数据2,数据3,数据4;
示例:
#include <iostream>
using namespace std;
void test01()
//方式1
int arr[2][3];
arr[0][0] = 1;
arr[0][1] = 2;
arr[0][2] = 3;
arr[1][0] = 4;
arr[1][1] = 5;
arr[1][2] = 6;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
cout << arr[i][j] << " ";
cout << endl;
//方式2 ;
int arr2[2][3] =
1,2,3,
4,5,6
;
//方式3
int arr3[2][3] = 1,2,3,4,5,6 ;
//方式4
int arr4[][3] = 1,2,3,4,5,6 ;
int main()
test01();
system("pause");
return 0;
5.3.2 二维数组数组名
- 查看二维数组所占内存空间
- 获取二维数组首地址
示例:
#include <iostream>
using namespace std;
void test01()
//二维数组数组名
int arr[2][3] =
1,2,3,
4,5,6
;
cout << "二维数组大小: " << sizeof(arr) << endl;
cout << "二维数组一行大小: " << sizeof(arr[0]) << endl;
cout << "二维数组元素大小: " << sizeof(arr[0][0]) << endl;
cout << "二维数组行数: " << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组列数: " << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
//地址
cout << "二维数组首地址:" << arr << endl;
cout << "二维数组第一行地址:" << arr[0] << endl;
cout << "二维数组第二行地址:" << arr[1] << endl;
cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;
cout << "二维数组第二个元素地址:" << &arr[0][1] << endl;
int main()
test01();
system("pause");
return 0;
总结1:二维数组名就是这个数组的首地址
总结2:对二维数组名进行sizeof时,可以获取整个二维数组占用的内存空间大小
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距
c++学习--点滴记录004(代码片段)
4程序流程结构C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件... 查看详情
c++学习--点滴记录007(代码片段)
7指针7.1指针的基本概念指针的作用:可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址7.2指针变量的定义和使用指针变量定义语法:数据类型*变量名;示... 查看详情
pyqt5学习记录005:qmainwindow及状态栏菜单栏和工具栏(代码片段)
1#!/usr/bin/envpython23importsys4fromPyQt5.QtWidgetsimport(QApplication,5QMainWindow,6QWidget,7QAction,8QLabel,9QTextEdit,10QLineEdit,11QPushButton,12QGridLayout)13fromPyQt5.QtCoreimportQt14fromPyQt5. 查看详情
[记录点滴]编译安装luarocksluacheckluautf8(代码片段)
[记录点滴]编译安装luarocks、luacheck、luautf80x00摘要记录一次安装luarocks&第三方库的过程。0x01luarocks如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,lua第三方包管理工具就是luarocks。wgethttps://luarocks.org/rel... 查看详情
leetcode刷题--点滴记录001(代码片段)
1.两数之和要求给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。解题——暴力破解C++版本#include<iostream>usingnamespacestd;#include<vector>vo... 查看详情
java学习--点滴记录002
1.IDEA1.1IDEA概述IDEA全称IntelliJIDEA,是用于Java语言开发的集成环境集成环境:把代码编写,编译,执行,调试等多种功能综合到一起的开发工具1.2IDEA的下载和安装1.2.1下载可以到官方网站下载,网址为... 查看详情
c++学习之旅(代码片段)
前言 转专业到物联网的心酸学习记录,希望自己能进步,成为自己未来想成为的那个人吧。有空就记录记录1.1初识c++ 初始认识,C++是个面向对象的编程语言#include<iostream>#include<cstdio>usi... 查看详情
leetcode刷题--点滴记录011(代码片段)
11.剑指Offer35.复杂链表的复制要求请实现copyRandomList函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。解题C++版本#include&l... 查看详情
leetcode刷题--点滴记录012(代码片段)
12.剑指Offer58-II.左旋转字符串要求字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位... 查看详情
记录代码的点滴!
...,我注册了博客园的账户,开始记录我的代码日常。 学习web前端,是我之前没有考虑过的事情。在大学浑浑噩噩度过了四年后,终于意识到就业的危机,刚入学的时候听到学长学姐们说毕业即失业,感觉离自己很遥远,但临... 查看详情
leetcode刷题--点滴记录014(代码片段)
14.剑指Offer59-II.队列的最大值要求请定义一个队列并实现函数max_value得到队列里的最大值,要求函数max_value、push_back和pop_front的均摊时间复杂度都是O(1)。若队列为空,pop_front和max_value需要返回-1解题C++版本#include<i... 查看详情
leetcode刷题--点滴记录018(代码片段)
18.剑指Offer19.正则表达式匹配要求请实现一个函数用来匹配包含“.”和“*”的正则表达式。模式中的字符“.”表示任意一个字符,而“*”表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串... 查看详情
leetcode刷题--点滴记录016(代码片段)
16.剑指Offer10-I.斐波那契数列要求写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项(即F(N))。斐波那契数列由0和1开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7... 查看详情
[记录点滴]一个python中实现flatten的方法(代码片段)
之前如果想使用flatten,一般借助于numpy.ndarray.flatten。但是flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用。最近找到一个轻便的办法如下:fromitertoolsimportchain#flattenprint(list(set(chain.from_iterable(["aaa","bbb&q... 查看详情
[记录点滴]一个解决lua随机数生成问题的办法(代码片段)
[记录点滴]一个解决Lua随机数生成问题的办法0x00摘要本文是开发中的简略记录,具体涉及知识点有:Lua,随机数。0x01背景Lua语言生成随机数需要用到两个函数:math.randomseed(n):用法是接收一个整数n作为随即序列的种子。math.random(... 查看详情
leetcode刷题--点滴记录017(代码片段)
17.剑指Offer10-II.青蛙跳台阶问题要求一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。答案需要取模1e9+7(1000000007),如计算初始结果为:1000000008,... 查看详情
hcnp学习记录点滴-ftp实施
步骤:1、网络连通测试(设置ip地址)interfaceGigabitEthernet0/0/0 ipaddress10.0.0.1255.255.255.0 2、开启ftp服务(服务器)[Huawei]ftpserverenable验证:[Huawei]disftp-server FTPserverisrunning & 查看详情
leetcode刷题--点滴记录020(代码片段)
20.剑指Offer46.把数字翻译成字符串要求给定一个数字,我们按照如下规则把它翻译为字符串:0翻译成“a”,1翻译成“b”,……,11翻译成“l”,……,25翻译成“z”。一个数字可能有多个翻译。请编... 查看详情