数组

C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。

数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。

所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。

这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C++ 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 balance,声明语句如下:

现在 balance 是一个可用的数组,可以容纳 10 个类型为 double 的数字。

在 C++ 中,您可以逐个初始化数组,也可以使用一个初始化语句,如下所示:

如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果:

您将创建一个数组,它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例:

上述的语句把数组中第五个元素的值赋为 50.0。所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。以下是上面所讨论的数组的的图形表示:

数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:

tianqixin

Array 直接初始化 char 数组是特殊的,这种初始化要记得字符是以一个 null 结尾的。

a4 是错误的,虽然 a4 包括 6 个直接字符,但是 array 大小是 7:6个字符 + 一个null。正确的是:

tianqixin

tianqixin

Array 是固定大小的,不能额外增加元素.当我们想定义不固定大小的字符时,可以使用 vector(向量) 标准库。

vec 的大小随着 for 循环的输入而增大。

执行以上代码,输出结果:

tianqixin

deanliuliu

在C++中,setw(int n)用来控制输出间隔,(n-1个空格)。

setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。

则输出:

deanliuliu

prigioni

静态 int array[100];   定义了数组 array,并未对数组进行初始化

静态 int array[100] = {1,2};  定义并初始化了数组 array

动态 int* array = new int[100]; delete []array;  分配了长度为 100 的数组 array

动态 int* array = new int[100]{1,2};  delete []array; 为长度为100的数组array初始化前两个元素

prigioni

salonshj

数组初始化时可以用聚合方法,但是赋值时候不可以用聚合方法。举例如下:

合法:

不合法:

salonshj

张家子谦

张家子谦

cliff

C++ 数组的长度:

输出结果为:

对于字符串数组,可以用 strlen() 函数来获取字符串数组的长度。

cliff

锦色狐狸

Vector(向量): C++ 中的一种数据结构,确切的说是一个类。它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的。

用法:

1.文件包含:

首先在程序开头处加上 #include<vector> 以包含所需要的类文件 vector。

还有一定要加上 using namespace std;

2.1 例: 声明一个 int 向量以替代一维的数组: vector <int> a; (等于声明了一个 int 数组 a[],大小没有指定,可以动态的向里面添加删除)。

2.2 例: 用 vector 代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即: vector <int *> a 。同理想用向量代替三维数组也是一样,vector <int**>a; 再往上面依此类推。

3.具体的用法以及函数调用:

3.1 得到向量中的元素和数组一样,例如:

使用数组给向量赋值:

或者:

锦色狐狸

炫明

获取数组长度遍历数组:

炫明

jishux2

对于[]这种下标运算符,a[i]都是被解释为*(a+i)的。这是C语言中的一个规则,它把数组名和指针名视为等价的。

你可以把[]看作是一种语法糖,它让你用更简洁的方式来访问数组元素,而不用写*和+。但是在编译器的眼中,它们都是一样的,它们都会被转换成指针运算。

你可以用下面的公式来理解:

这里,a[i]和*(a+i)是等价的,它们都表示a加上i后所指向的地址处的值,也就是a的第i个元素。而*(i+a)和i[a]也是等价的,它们都表示i加上a后所指向的地址处的值,同样也是a的第i个元素。这里,i和a可以交换位置,因为加法运算是可交换的。

你可能会觉得i[a]很奇怪,但是它确实是合法的C语言代码,只不过很少有人这么写。

THE END
0.C++构造函数详解:基础分类与实践应用1、构造函数名称和类的名称一致(包括大小写); 2、构造函数没有返回类型,也没有void类型返回;(同时,析构函数也一样) 3、构造函数可以对成员变量进行初始化 构造函数的分类 构造函数根据入参类型的不同,有不同的分类。这种特性,是基于函数重载的使用。 jvzquC41dnuh0lxfp0tfv8|gkzooa=8:269828ftvkimg8igvcomu8645;834<=
1.类型大小与构造函数int类型,构造函数 不同平台下int类型、指针类型的数据大小 对于int类型数据和指针类型数据的大小,是非常基础的问题。 在一个具体的平台上,确定他们最好的办法就是使用sizeof(type)对其进行判断,返回当前数据类型的大小。 在不同的平台下,int类型和指针类型的数据类型大小时怎样的呢?如果要给出一个统一的答案,自然jvzquC41dnuh0lxfp0tfv8|gkzooa=8;778:58ftvkimg8igvcomu86446997B;
2.冲压模具依构造可分为单工程模复合模连续模三大类本文详细介绍了冲压模具的构造分类,包括单工程模、复合模和连续模,强调了连续模在效率上的优势。文章还探讨了模具设计的单元化概念,模板的构成和规格,以及各种模板设计的细节,如整块式、轭式和镶入式。此外,文中还涵盖了模具对准单元、导引系统、冲头与母模单元等关键设计要素,为五金冲压模具设计提供了深入的理解。 jvzquC41dnuh0lxfp0tfv8Ytqw|bkuqgac5bt}neng5eg}fknu523@=279:4
3.堆数据结构详解:性质分类排序及构造算法如何构造一个大堆 堆的性质 堆中某个节点的值总是不大于或者不小于其父节点的值 堆是一颗完全二叉树 堆的分类 小堆每个节点的值都小于或者等于它的左右孩子节点的值。 大堆每个节点的值都大于或者等于它的左右孩子节点的值。 两种结构在数组中是如何储存的如下图: jvzquC41dnuh0lxfp0tfv87523e92=;:3380c{ykenk0fnyckny03<;;37949
4.气瓶基础知识一、按构造分类(共分为五类) 1、无缝气瓶 1)通用的无缝气瓶的形式为:筒体呈圆柱形,一端为凸形、凹形或H形的瓶底,而另一端为带颈的球形瓶肩。在瓶颈上面有一个带锥形螺纹的瓶口,用来装配瓶阀。 常用的瓶体形式有:1)凹形底;2)凸形带底座;3)凸形底;4)H形底;5)无底双口形。 jvzquC41yy}30|hwv0kew7hp1nynr8723;524:61e4:47
5.一文了解|「以假乱真」的人工血管(二)按照构造分类 管状人工血管:具有圆柱形状,类似自然血管的外观和结构。 束状人工血管:由一束纤维束或纤维编织而成,可以提供多个通道,用于支持血液流动。 薄膜人工血管:由薄膜形态的材料制成,常用于修复小血管或用作血管修复的辅助材料。 (三)按照应用领域分类 jvzquC41yy}/kwsqof4ptp4ctvodnn486f;g9?j:hg:1f9523f?e;o6
6.C++构造与析构详解构造函数和析构函数 本文详细介绍了C++中的构造函数和析构函数的概念、分类及其调用规则。包括构造函数的不同形式(无参数、有参数、拷贝构造)、初始化列表的使用,以及对象动态管理和深拷贝浅拷贝的区别。 对象的构造和析构 1.基本概念   创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。jvzquC41dnuh0lxfp0tfv8hqqn}sk}jt1cxuklqg1fkucrqu19>73?782