Part04 C++数组

这篇文章介绍了C++中的一维和二维数组,包括它们的特点、语法和用途。一维数组存储在连续的内存空间,可通过sizeof运算符获取数组占用的内存。文中给出了数组元素逆置和冒泡排序的实例。二维数组则需要指定行数和列数,其操作与一维数组相似。
摘要由CSDN通过智能技术生成

头像

数组

一维数组

特点

放在一块连续的内存空间中
数组内元素都是同一数据类型

语法

数据类型 数组名[元素个数];
数据类型 数组名[元素个数] = {值1,值2,…};
数据类型 数组名[] = {值1,值2,…}; ---------此时会自主判断元素个数

注意与C#区别,C#是在数据类型后[],C++是在变量名后[]
一维数组申明时必须知道数组的长度

#include <iostream>
using namespace std;

int main()
{
	system("pause");
	int arr[] = { 10,20,30 };
	for (int i = 0; i < 3; i++)
	{
		cout << arr[i] << endl;
	}

	system("pause");
	return 0;
}

一维数组名称用途

用sizeof字段获取数组占用内存空间
	cout << sizeof(arr[0]) << endl; //结果是4 ,数据类型是int
	cout << sizeof(arr) << endl;  //结果12(因为有三个元素)	

可以利用利用上述方法求得数组的长度

	cout << sizeof(arr) / sizeof(arr[0]) << endl; //结果为3

此方法可以用在for打印数组元素时的循环边界

	int arrNum;
	arrNum = sizeof(arr) / sizeof(arr[0]); //求得数组的长度
	for (int i = 0; i < arrNum; i++)
	{
		cout << arr[i] << endl;
	}
通过数组名获取数组的首地址

语法:

直接输出 数组名 ,输出数组的首地址(16进制)
输出 &数组元素 ,输出数组内值的首地址 -----------

其中&为取址符,否则会输出该数组元素而不是首地址

	cout << arr << endl;		  //007CF78C 16进制
	cout << (int)arr << endl;	  //8189836 转为10进制
	cout << (int)&arr[0] << endl; //8189836 第一个元素与数组首地址一致
	cout << (int)&arr[1] << endl; //8189840 第二个元素首地址是第一个元素首地址加单个元素占用空间

案例,数组内元素逆置

	int start = 0;										   //起始下标
	int end = sizeof(arr) / sizeof(arr[0]) - 1;			   //最末下标
	int temp = 0;										   //临时变量
	while (start < end)									   
	{													   
		temp = arr[start];								   
		arr[start] = arr[end];							   
		arr[end] = temp;								   
		start++;										   
		end--;											   
	}													   //将对称元素进行交换 	

案例,冒泡排序

	int temp = 0;
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]) - 1; i++)						 //进行元素个数-1次冒泡
	{
		for (int j = 0; j < sizeof(arr) / sizeof(arr[0]) - i - 1; j++)				 //每次冒泡的数量比上一次减一(用i表示-1/per)
		{
			if (arr[j] > arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
		cout << arr[i] << endl;
	}

二维数组

语法

数据类型 数组名 [ 行数 ] [ 列数 ];
数据类型 数组名 [ 行数 ] [ 列数 ] = {{值1,值2,…},{值3,值4,…},…};
数据类型 数组名 [ 行数 ] [ 列数 ] = {值1,值2,值3,值4,…};
数据类型 数组名 [ ] [ 列数 ] = {值1,值2,值3,值4,…};

即,必须给定列数,行数在未给定的情况下可以根据初始化的数据自动算出。

二维数组名称用途 与一维数组一致

用sizeof字段获取数组占用内存空间
通过数组名获取数组的首地址

今日总代码

#include <iostream>
using namespace std;

int main()
{
   system("pause");
   int arr[] = { 20,90,30,52,68,98 };

   cout << sizeof(arr) << endl;
   cout << sizeof(arr[0]) << endl;
   cout << sizeof(arr) / sizeof(arr[0]) << endl;

   int arrNum;
   arrNum = sizeof(arr) / sizeof(arr[0]);

   for (int i = 0; i < arrNum; i++)
   {
   	cout << arr[i] << endl;
   }

   cout << arr << endl;		  //007CF78C
   cout << (int)arr << endl;	  //8189836
   cout << (int)&arr[0] << endl; //8189836
   cout << (int)&arr[1] << endl; //8189840

   int start = 0;										   //起始下标
   int end = sizeof(arr) / sizeof(arr[0]) - 1;			   //最末下标
   int temp = 0;										   //临时变量
   while (start < end)
   {
   	temp = arr[start];
   	arr[start] = arr[end];
   	arr[end] = temp;
   	start++;
   	end--;
   }													   //将对称元素进行交换
   for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
   {
   	cout << arr[i] << endl;
   }

   int temp = 0;
   for (int i = 0; i < sizeof(arr) / sizeof(arr[0]) - 1; i++)							 //进行元素个数-1次冒泡
   {
   	for (int j = 0; j < sizeof(arr) / sizeof(arr[0]) - i - 1; j++)				 //每次冒泡的数量比上一次减一(用i表示-1/per)
   	{
   		if (arr[j] > arr[j + 1])
   		{
   			temp = arr[j];
   			arr[j] = arr[j + 1];
   			arr[j + 1] = temp;
   		}
   	}
   }
   for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
   {
   	cout << arr[i] << endl;
   }
   system("pause");
   return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值