提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
数组是一组数据的集合,可以为整形数组、浮点型数组、字符数组、指针数组等等。在C\C++中,数组名为数组的地址,且是数组首元素的地址。
数组原理
1.代码演示
代码如下(示例):
#include <iostream>
using namespace std;
int main()
{
cout << "---------------------------------第一部分----------------------------------" << endl;
int que[3][4] = {1,2,3,5,
8,13,21,44,
65,109,274,383};
cout << "二维数组地址:"<<que << endl;
cout << "第1行数组地址:" << que[0] << endl;
cout << "第1行数组的第1个元素地址:" << &que[0][0] << endl;
cout << "第2行数组地址:" << que[1] << endl;
cout << "第3行数组地址:" << que[2] << endl;
cout << "第1行数组的第4个元素值:" << que[0][3] << endl;
cout << "---------------------------------第二部分----------------------------------" << endl;
int* p_que[3] = { 0 }; //初始化指针数组
for (int i = 0; i < 3; i++) p_que[i] = que[i]; //将每一行数组地址储存到指针数组中
cout << "解出第一元素地址的值:" << *p_que[0] << endl; //对应que[0][0]
cout << "---------------------------------第三部分----------------------------------" << endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
int* eme = p_que[i] + j;
cout <<"i,j:"<< i <<","<<j<< endl;
cout << eme << endl;
cout << *eme << endl;
}
}
return 0;
}
2.代码讲解
控制台输出结果:
观察发现:
1、二维数组地址=首行数组地址=首行数组的首个元素地址。
2、 相邻数组间的地址相差10(16进制),转化为10进制为16,即相邻元素地址相差4,为一个int所占内存大小。
观察发现,j每次都增加1,但eme每次都增加4,这是因为数组+1会指向数组下一个元素的地址,而不是仅仅为变量+1。
总结
1、数组名为首元素地址。
2、二维数组地址=首行数组地址=首行数组的首个元素地址。
3、数组名+1=下一个元素地址。