C++| C++ 入门教程(五) 数组
5 数组
5.1 概述
所谓数组,就是一个集合,里面存放了相同类型的数据元素
【C++| C++ 入门教程(五) 数组】特点1:同一个类型
特点2:存储空间连续
5.2 一位数组
5.2.1 一位数组的定义方式
三种定义方式:
数据类型 数组名[ 数组长度 ];
数据类型 数组名[ 数组长度 ] = { 值1, 值2,……};
数据类型 数组名[] = { 值1, 值2,……};
5.2.2 数组名的用途 可以统计数组在内存中的长度
可以获取数组在内存中的首地址
思考:
我现在有一个数组
int arr[10]
此时,arr
代表的是第一个元素的地址那么,arr+1 应该和 &arr[1] 一样,代表的是第二个元素的地址
如果是 &arr[0] + 1呢,代表的是第一个元素的第二个字节的地址么?
关于数组名的几种使用,对于数组名的意义,我做了一个实验,写了代码如下:
#include
using namespace std;
int main() {
int arr[7]{ 5,2,0,1,3,1,4 };
cout << "&arr[0] = " << (int)&arr[0] << endl;
cout << "arr = " << (int)arr << endl;
cout << "&arr[1] = " << (int)&arr[1] << endl;
cout << "arr + 1 = " << (int)(arr + 1) << endl;
cout << "&arr[0] +1 = " << (int)(&arr[0] + 1) << endl;
cout << "&arr + 1 = " << (int)(&arr + 1) << endl;
cin.get();
return 0;
}
分别对应几种组合,最后输出如下:
&arr[0] = 11794864可以最后看出来
arr = 11794864
&arr[1] = 11794868
arr + 1 = 11794868
&arr[0] +1 = 11794868
&arr + 1 = 11794892
arr
指向的是数组的第一个元素,在这个基础上,无论是arr + 1
,还是&arr[1]
,还是&arr[0] + 1
对应的都是第二个元素。但是
&arr
虽然地址也是第一个元素的地址,但是实际上是指向整个数组的地址。所以&arr + 1
地址上会直接加上28。那问题来了,之前的笔记提过,数组作为参数传入函数是只有第一个元素的地址的。那可以尝试用这种方法么?
事实是,这种语法是被禁止的。在函数的参数中写
&
会被当成引用。5.3 二维数组
5.3.1 二维数组定义方式 四种定义方式:
数据类型 数组名[ 行数 ][ 列数 ];
数据类型 数组名[ 行数 ][ 列数 ] = {{ 数据1, 数据2}, { 数据3, 数据4}};
数据类型 数组名[ 行数 ][ 列数 ] = { 数据1, 数据2, 数据3, 数据4};
数据类型 数组名[][ 列数 ] = { 数据1, 数据2, 数据3, 数据4};
5.3.2 数组名的用途 可以统计数组在内存中的长度
可以获取数组在内存中的首地址
思考:
如果现在有一个二维数组
int arr[i][j]
,和一维数组相同。arr 表示第一个元素,但是也可以用 arr[n] 来表示第 n+1 行的首地址。推荐阅读
- android第三方框架(五)ButterKnife
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 【故障公告】周五下午的一次突发故障
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- opencv|opencv C++模板匹配的简单实现
- 五年后,我要成为独立自强自信的女性
- 二十年后的家乡
- 《格列佛游记》第二卷第五章概括
- 六月更新的......
- 2021-05-05五一的五天假期结束了