【c++】数组

目录

1.1概述

1.2一维数组

1.3二维数组


1.1概述

数组就是一个集合,里面存放了相同类型的数据元素。

特点1:数组中的每个数据元素都是相同的数据类型

特点2:数组是由连续的内存位置组成的

1.2一维数组

数组下标从0开始

定义的方式:

1.数组类型 数组名[数组长度];---eg:int arr[5];arr[0]=10;arr[1]=20;.....各个赋值

2.数据类型 数组名[数组长度]={值1,值2,……};---eg:int arr[5]={10,20,30,40,50};

3.数组类型 数组名[ ]={值1,值2,……};---eg:int arr[]={10,20,30,40,50};

注意:定义数组的时候,必须要有初识长度。

一维数组名的用途:

1.可以统计整个数组在内存中的长度

sizeof(arr)-->指整个数组的长度,sizeof(arr[0])-->指单个元素所占用的长度,sizeof(arr)/sizeof(arr[0])-->可以得到整个数组元素个数

2.可以通过数组名查看数组在内存中的首地址

eg:arr----就是十六进制下数组首地址

       &arr[0]----就是十六进制下数组首元素的地址(与上面是一样的)

注意:数组名是一个常量,不可以重新赋值

案例:五只小猪称体重:在一个数组中记录五只小猪的体重并找出最重的并打印,eg:int arr[5]={300,350,200,400,250};

int main()
{
	int arr[] = {200,300,250,350,400};
	int max = arr[0];
	for (int i = 0; i < 5; i++)
	{
		if (max < arr[i])
			max = arr[i];
	}
	cout << "五只小猪中最大的是:"<<max<< endl;
	system("pause");
	return 0;
}

冒泡排序:

下面是由小到大排序

1.比较相邻的元素,如果第一个比第二个大,就交换二者。(一次)

2.对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大的值。(一趟)

3.重复以上,每次比较次数减一,直到不需要比较。

趟数=个数-1,次数=个数-趟数-1

int main()
{
	int arr[] = {4,2,8,0,5,7,1,3,9};
	cout << "原来的数组:" <<endl;
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
	
	for (int i = 0; i < 9 - 1; i++)//趟
	{
		for (int j = 0; j < 9 - i - 1; j++)//次
		{
			if (arr[j]>arr[j + 1])//大的往后走
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;

			}
		}
	}
	cout << "排序后的数组:" << endl;
	for (int i = 0; i < 9; i++)
	{
		cout << arr[i] << " ";
	}
	cout << endl;
	system("pause");
	return 0;
}

1.3二维数组

二维数组就是在一维数组上加了一个维度

定义方式:1.数据类型 数组名[行][列];eg:int arr[2][3];arr[0][0]=1;arr[0][1]=2;.....各个赋值

                  2.数据类型 数组名[行][列]={{数1,数2},{数3,数4}};eg:int arr[2][3]={{1,2,3},{4,5,6}};

                  3.数据类型 数组名[行][列]={数1,数2,数3,数4};eg:int arr[2][3]={1,2,3,4,5,6};

                  4.数据类型 数组名[    ][列]={数1,数2,数3,数4};eg:int arr[][3]={1,2,3,4,5,6};

注意:书写时可以省去行数但不能省去列数

二维数组名用途:

1.查看二维数组所占空间

sizeof(arr)---整个数组的长度,sizeof(arr[0])---指第0行元素所占的长度,sizeof(arr[0][0])---指第一个元素所占的长度,sizeof(arr)/sizeof(arr[0])---指行数,sizeof(arr[0])/sizeof(arr[0][0])---指列数

2.获取二维数组首地址

arr---指十六进制的二维数组首地址,arr[0]---指十六进制的第一行首地址,&arr[0][0]---指十六进制的第一个元素的首地址

案例:考试成绩统计:张三        语文:100        数学:100        英语:100

                                    李四        语文:90          数学:50          英语:100

                                    王五        语文:60          数学:70          英语:80

#include<iostream>
using namespace std;
#include<string>
int main()
{
	int arr[3][3] = { { 100, 100, 100 }, { 90, 50, 100 }, {60,70,80} };
	string name[3] = { "张三", "李四", "王五" };
	for (int i = 0; i < 3; i++)//打印三人的成绩
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << "	";
		}
		cout << endl;
	}
	for (int i = 0; i < 3; i++)//打印三人的总分
	{
		int sum = 0;
		for (int j = 0; j < 3; j++)
		{
			sum += arr[i][j];
		}
		cout << name[i] << "的总分为:" << sum<< endl;
	}
	system("pause");
	return 0;
}

上一篇:设置界面 联网后 读取回包 判断有没有联网成功


下一篇:C++进阶问题-智能指针&继承&sizeof