C++学习 --数组

目录

1, 一维数组

1-1, 指定长度定义

1-2, 不指定长度定义

1-3, 获取数组元素

1-4, 获取数组长度

1-5, 获取数组地址

1-5-1, 获取数组首地址

1-5-2, 获取数组元素地址

2, 二维数组

2-1, 指定行列定义二维数组

2-2, 仅指定列定义二维数组

2-3, 获取数组元素

2-4, 获取二维数组地址

2-4-1, 获取二维数组首地址

2-4-2, 获取二维数组行地址

2-4-3, 获取二维数组元素地址

2-5, 获取二维数组长度


数组为相同数据类型的集合,占有连续的内存空间, 分为一维数组, 二维数组

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值