(16)数组
来源:互联网 发布:中建七局网络教育 编辑:程序博客网 时间:2024/06/10 20:09
数组是一种类似于标准库类型vector的数据结构,元素储存在连续的存储空间内。
数组与vector的异同
同:数组也是存放类型相同的对象的容器,这些对象本身没有名字,需要通过其所在的位置访问。
异:数组的大小确定不变,不能随意向数组中增加元素。
所以如果不清楚元素的确切个数,请使用vector。
同时数组也是一种复合类型,数组声明形式:a[d],其中a是数组的名字,d是数组的维度。数组中元素的个数也属于数组类型的一部分,编译的时候维度应该是已知的,而且是结果不为0的常量表达式。
和内置类型的变量一样,如果在函数内部定义了某种内置类型的数组,那么默认初始化会令数组含有未定义的值。定义数组的时候必须指定数组的类型,不允许用auto关键字由初始值的列表推断类型,而且数组的元素应为对象,因此不存在引用的数组。
在对数组进行列表初始化时,允许忽略数组的维度。编译器会根据初始值数量计算并推测出来。如果指明了维度,数组元素的数量不应超过维度的大小。假如维度比提供的初始值数量大,则提供的初始值初始化靠前的元素,剩下的元素被初始化成默认值。
注意:不允许一个数组初始化或复制给另一个数组。字符数组有一种额外的初始化形式,我们可以用字符串常量对此类数组进行初始化。使用这种方式时,要注意字符串字面值的结尾处还有一个空字符,这个空字符会像其他字符一样拷贝到字符数组中。如:
char a1[]={'c'};//没有空字符char a2[]={'c','\0'};//维度为2,显示包含空字符char a3[]="hello";//自动添加char a4[6]="daniel"//错误,没有足够空间存放空字符
数组的声明:
数组能存放大多数类型的对象,比如:指针。所以要理清楚存放指针的数组、数组的指针、数组的引用之间的区别。
int *ptr[10];//ptr是含有10个整型指针的数组int &ptr1[10];//错误,不存在存放引用的数组int (*ptr2)[10]=&arr//ptr2指向一个含有10个整数的数组int (&ptr3)[10]=arr//ptr3引用一个含有10个整数的数组
int *(&array)[10]= ptr//array是数组的引用,该数组含有10个指针要想理解数组声明的含义,最好的办法是从数组的名字开始按照由内向外的顺序阅读。
访问数组元素的方法:
一下标运算符
二范围for语句
用法和string和vector的相同,但是在使用数组下标的时候,通常将下标定义为size_t类型。size_t是一种机器相关的无
符号类型。
0 0
- (16)数组
- 数组的数组(变长数组)
- 16 数组
- 交错数组 (齿轮数组、数组中的数组)
- 数组(一维数组)
- vba 数组(动态数组)
- 对象数组(动态数组)
- 零长数组(柔性数组)
- 变长数组(动态数组)
- 数组反转(整型数组)
- 数组(2)二维数组
- 数组(4)数组排序
- 类数组(伪数组)
- 数组(三)--打印数组
- 数组(十)--二维数组
- 构建乘积数组(数组)
- 数据转换(字节数组转文件、文件转字节数组、16进制字符转字节数组、字节数组转16进制字符)
- *数组名(数组元素) 与*数组名(指针数组中的数组名)
- https://github.com/jakob-grabner/Circle-Progress-View
- Android WebView 的回退方法(goback) 遭遇重定向
- 花生壳内网穿透功能设置
- Python图像处理库PIL中快速傅里叶变换FFT的实现(一)
- 【Android】Android防止过快点击造成多次事件执行(防止按钮重复点击)
- (16)数组
- Java代码中如何交换两个对象
- struts2常用标签详解
- Linux网络性能分析命令
- vb+dx泡泡堂dome
- 10.2创建sde服务不能启动问题
- 点击按钮,重置或者清空textarea中的数据
- [HNOI2008]GT考试
- 使用Ksoap2-Andorid调用WebService操作步骤