目录
数组为相同数据类型的集合,占有连续的内存空间, 分为一维数组, 二维数组
1, 一维数组
1-1, 指定长度定义
通过数据类型 数组名[指定长度], 定义一维数组
//指定长度定义一维数组, 对于没有给定的数组元素自动补0
//attr1[5]相当于为{1, 2, 3, 0, 0}
int attr1[5] = {1, 2, 3};
1-2, 不指定长度定义
通过数据类型 数组名[], 可定义一个一维数组
//不指定长度定义一维数组, 会根据元数个数推出数组长度
int attr2[] = {10, 20, 30};
1-3, 获取数组元素
通过数组名[下标])进行数组元素访问, 下标从0开始
#include <iostream>
#include <string>
using namespace std;
int main()
{
int attr_1[5] = { 1, 2, 3 };
int attr_2[] = { 1, 2, 3 };
cout << "attr_1的元素:";
for (int i = 0; i < 5; i++)
{
//通过数组名[下标]访问数组元素
cout << attr_1[i] << " ";
}
cout << endl;
cout << "attr_2的元素:";
for (int i = 0; i < 3; i++)
{
cout << attr_2[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
----------------------------------------------------------
输出结果:
attr_1的元素:1 2 3 0 0
attr_2的元素:1 2 3
1-4, 获取数组长度
通过sizeof(数组名)/sizeof(数组名[0]), 可获取数组的长度
//获取数组的长度
sizeof(attr1) / sizeof(attr1[0]);
1-5, 获取数组地址
1-5-1, 获取数组首地址
通过数组名, 可获取数组首地址
#include <iostream>
using namespace std;
int main()
{
int attr1[5] = { 1, 2, 3 };
//获取首地址(默认十六进制)
cout << "数组首地址:" << attr1 << endl;
//获取首地址(十进制)
cout << "数组首地址:" << (int)attr1 << endl;
system("pause");
return 0;
}
------------------------------------------------------------------------
输出结果:
数组首地址:000000D2374FF828
数组首地址:927987752
1-5-2, 获取数组元素地址
通过&数组名[下标], 获取元素的地址
#include <iostream>
using namespace std;
int main()
{
int attr1[5] = {1, 2, 3};
//获取数组元素地址(默认十六进制)
for (int i = 0; i < 5; i++)
{
//&叫着取地址符
cout << "第" << i << "个元素的地址:" << &attr1[i] << endl;
}
//获取数组元素地址(默认十六进制)
for (int i = 0; i < 5; i++)
{
cout << "第" << i << "个元素的地址:" << (int)&attr1[i] << endl;
}
system("pause");
return 0;
}
------------------------------------------------------------------------
输出结果:
第0个元素的地址:000000D2374FF828
第1个元素的地址:000000D2374FF82C
第2个元素的地址:000000D2374FF830
第3个元素的地址:000000D2374FF834
第4个元素的地址:000000D2374FF838
第0个元素的地址:927987752
第1个元素的地址:927987756
第2个元素的地址:927987760
第3个元素的地址:927987764
第4个元素的地址:927987768
2, 二维数组
2-1, 指定行列定义二维数组
通过数组名[行数][列数], 可定义一个二维数组
//指定行列定义二维数组
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
2-2, 仅指定列定义二维数组
通过数组名[][列数], 可定义一个二维数组
//省略行定义二维数组
int attr1[][3] = { {10, 20, 30}, {40, 50, 60}, {70, 80, 90} };
2-3, 获取数组元素
#include <iostream>
using namespace std;
int main()
{
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
//输出数组attr
cout << "数组attr:" << endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout << attr[i][j] << " ";
}
cout << endl;
}
system("pause");
return 0;
}
-------------------------------------------------------------------
输出结果:
数组attr:
1 2 3
4 5 6
7 8 9
2-4, 获取二维数组地址
2-4-1, 获取二维数组首地址
通过数组名, 可获取二维数组的首地址
#include <iostream>
using namespace std;
int main()
{
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
//默认地址格式十六进制, 获取数组首地址
cout << "attr的首地址:" << attr << endl;
//十进制格式, 获取数组首地址
cout << "attr的首地址:" << (int)attr << endl;
system("pause");
return 0;
}
-----------------------------------------------------------
输出结果:
attr的首地址:00D8FCA4
attr的首地址:14220452
2-4-2, 获取二维数组行地址
通过数组名[行号], 可获取二维数组行地址
#include <iostream>
using namespace std;
int main()
{
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
//指定行号获取数组行地址
cout << "attr的行地址:" << attr[1] << endl;
system("pause");
return 0;
}
-------------------------------------------------------------
输出结果:
attr的行地址:00B9F790
2-4-3, 获取二维数组元素地址
通过&数组名[行号][列号], 可获取二维数组元素地址
#include <iostream>
using namespace std;
int main()
{
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
//获取数组元素地址
cout << "attr元素的地址:" << endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout << &attr[i][j] << endl;
}
}
system("pause");
return 0;
}
------------------------------------------------------------
输出结果:
attr元素的地址:
00CFFA1C
00CFFA20
00CFFA24
00CFFA28
00CFFA2C
00CFFA30
00CFFA34
00CFFA38
00CFFA3C
2-5, 获取二维数组长度
通过sizeof(数组名) / sizeof(数组名[行][列]) , 可获取二维数组长度, 通过sizeof(数组名) / sizeof(行), 可获取二维数组行长度, 通过sizeof(数组名[行]) / sizeof(数组名[行][列]), 可获取二维数组列长度
#include <iostream>
using namespace std;
int main()
{
int attr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
//获取数组长度
cout << "数组长度:" << sizeof(attr) / sizeof(attr[0][0]) << endl;
//获取数组行数
cout << "数组行数:" << sizeof(attr) / sizeof(attr[0]) << endl;
//获取数组列数
cout << "数组行数:" << sizeof(attr[0]) / sizeof(attr[0][0]) << endl;
system("pause");
return 0;
}
---------------------------------------------------------------------
输出结果:
数组长度:9
数组行数:3
数组行数:3