栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

自学C++(数组)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自学C++(数组)

目录

一、一维数组

1.一维数组的特点

2.一维数组的定义方式

2.1数据类型 数组名[ 数据长度 ];

代码:

运行结果:

 2.2数据类型 数组名[数组长度] = {数据1,数据2,...};

代码:

运行结果:

 2.3数据类型 数组名[ ] = {数据1,数据2,...};

代码:

运行结果:

3.一维数组数组名

   数组名的作用:

3.1如何统计数组在内存中的长度?

代码:

运行结果:

3.2如何获取数组在内存中的首地址?

代码:

运行结果:

 注意事项:数组名不可以进行赋值操作,arr = 1;这种写法是错误的。

二、二维数组

1.二维数组的定义方式

1.1方式1:数据类型 数组名[ 行数 ][ 列数 ];

代码:

运行结果:

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

代码:

运行结果: 

1.3方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...};

代码:

运行结果:

​编辑

1.4方式4:数据类型 数组名[  ][ 列数 ] = {数据1,数据2,数据3,数据4,...};

代码:

运行结果:

2.二维数组数组名

数组名的作用:

2.1如何统计数组在内存中的长度?

代码:

运行结果:

2.2如何获取二维数组在内存中的首地址?

代码:

运行结果:

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

对于多个相同类型的数据来说,用数组表示更方便。

一、一维数组

1.一维数组的特点

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

特点2:数组是由连续的内存空间组成的

2.一维数组的定义方式

一维数组有三种定义方式:

方式1:数据类型 数组名[ 数据长度 ];

方式2:数据类型 数组名[ 数据长度 ] = {数据1,数据2,...};

方式3:数据类型 数组名[  ] = {数据1,数据2,...};

在定义数组名时注意不要与变量名相同。

例:分别用三种数组的定义方式来输出一组数据76,73,97,26,4,85,3

2.1数据类型 数组名[ 数据长度 ];

代码:
#include 
uisng namespace std;
int main()
{
    int arr[7];//7是数组中元素的个数
    arr[0] = 76;//0~6为数组的下标。下标都是从0开始。
    arr[1] = 73;
    arr[2] = 97;
    arr[3] = 26;
    arr[4] = 4;
    arr[5] = 85;
    arr[6] = 3;
    cout << arr[0] << endl;//分别输出这7个数
    cout << arr[1] << endl;
    cout << arr[2] << endl;
    cout << arr[3] << endl;
    cout << arr[4] << endl;
    cout << arr[5] << endl;
    cout << arr[6] << endl;
    system("pause");
    return 0;
}

运行结果:

 2.2数据类型 数组名[数组长度] = {数据1,数据2,...}; 代码:
#include 
using namespace std;
int main()
{
    int arr[7] = { 76,73,97,26,4,85,3 };
    //用循环结构,打印输出
    for(int i = 0; i < 7; i ++)
    {
         cout << arr[i] << endl;   
    }
    system("pause");
    return 0;
}
运行结果:

用这种方式定义数组,定义的数组长度如果小于数组元素的个数,会报错!!!

比如我们把 int arr[7] = { 76,73,97,26,4,85,3 }; 改为int arr[6] = { 76,73,97,26,4,85,3 };会出现以下情况:

如果我们定义的数组元素的个数 < 数组长度,那么剩下的元素会被0填满,如下:

 2.3数据类型 数组名[ ] = {数据1,数据2,...}; 代码:
#include 
using namespace std;
int main()
{
    int arr[] = { 76,73,97,26,4,85,3 };
    for(int i = 0; i < 7; i++)
    {
        cout << arr[i] << endl;
    }
    system("pause");
    return 0;
}

此种方式定义数组时,不需要我们自己定义数组的长度,特别是当数组元素特别多时,我们可以用这种定义方式,因为系统会自己统计出长度,如下图:

运行结果:

3.一维数组数组名

   数组名的作用:

     1、可以统计整个数组在内存中所占用的内存空间

     2、可以获取数组在内存中的首地址

3.1如何统计数组在内存中的长度? 代码:
#include 
using namespace std;
int main()
{
    int arr[5] = {1,2,3,4,5};
    cout << "arr数组占用内存空间为:" << sizeof(arr) << endl;
    cout << "其中一个元素arr[0]占用内存空间为:" << sizeof(arr[0]) << endl;
    cout << "arr数组中有 " << sizeof(arr) / sizeof(arr[0]) << " 个元素" << endl;
    system("pause");
    return 0;
}
运行结果:

一个int型占4字节,数组中有5个int型数据,所以占20个字节。

3.2如何获取数组在内存中的首地址? 代码:
#include 
using namespace std;
int main()
{
    int arr[5] = {1,2,3,4,5};
    cout << "arr数组的首地址为:" << arr << endl;
    //&为取地址符,如果不加&,那么将会打印arr[0]对应的元素,也就是1
    cout << "arr数组中第一个元素的地址为:" << &arr[0] << endl;
    system("pause");
    return 0;
}
运行结果:

结果相同是因为整个数组的首地址与第一个元素的地址是重叠的,如果打印第二个元素的地址,那么输出结果为007EF994,因为第一个元素占用4字节,这也印证了数组是一段连续的内层空间。而且没运行一起,首地址都会变,是因为每次分配的内存空间不一样,是内存空间动态管理的。

如果不加取地址符&,那么输出结果将会是:

 注意事项:数组名不可以进行赋值操作,arr = 1;这种写法是错误的。

二、二维数组

二维数组比一维数组多一个维度,就像矩阵。

1.二维数组的定义方式

二维数组有四种定义方式:

方式1:数据类型 数组名[ 行数 ][ 列数 ];

方式2:数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2,...},{数据3,数据4,...} };

方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...};

方式4:数据类型 数组名[  ][ 列数 ] = {数据1,数据2,数据3,数据4,...};

在这四种方式中,方式2更加直观,更利于代码的阅读。

分别用4种定义方式,定义一个2行3列的二维数组。

1.1方式1:数据类型 数组名[ 行数 ][ 列数 ]; 代码:
#include 
using namespace std;
int main()
{
	int arr[2][3];
	arr[0][0] = 1;
	arr[0][1] = 2;
	arr[0][2] = 3;
	arr[1][0] = 4;
	arr[1][1] = 5;
	arr[1][2] = 6;
	//逐个输出(这种方式代码行数很多,显得很笨重)
	cout << arr[0][0] << " ";
	cout << arr[0][1] << " ";
	cout << arr[0][2] << endl;
	cout << arr[1][0] << " ";
	cout << arr[1][1] << " ";
	cout << arr[1][2] << endl;
    cout << endl;
	//利用嵌套循环,打印这个数组的元素
	//外层循环打印行,内层循环打印列
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}
运行结果:

1.2数据类型 数组名[ 行数 ][ 列数 ] = { {数据1,数据2,...},{数据3,数据4,...} }; 代码:
#include 
using namespace std;
int main()
{
	//方式2:数据类型 数组名[行数][列数] = { {数据1,数据2,...},{数据3,数据4,...} };
	int arr[2][3] = { {1,2,3} ,{4,5,6} };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
	    cout << endl;
	}
	system("pause");
    return 0;
}

运行结果: 

1.3方式3:数据类型 数组名[ 行数 ][ 列数 ] = {数据1,数据2,数据3,数据4,...}; 代码:
#include 
using namespace std;
int main()
{
	//方式3:数据类型 数组名[行数][列数] = { 数据1,数据2,数据3,数据4,... };
	int arr[2][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
	    cout << endl;
	}
	system("pause");
    return 0;
}
运行结果:

1.4方式4:数据类型 数组名[  ][ 列数 ] = {数据1,数据2,数据3,数据4,...}; 代码:
#include 
using namespace std;
int main()
{
    //方式4:数据类型 数组名[][列数] = { 数据1,数据2,数据3,数据4,... };
	int arr[][3] = { 1,2,3,4,5,6 };
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			cout << arr[i][j] << " ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}
运行结果:

2.二维数组数组名 数组名的作用:

     1、可以统计二维数组在内存中所占用的内存空间

     2、可以获取二维数组在内存中的首地址

2.1如何统计数组在内存中的长度? 代码:
//可以统计二维数组在内存中所占用的内存空间
#include 
using namespace std;
int main()
{
	double arr[2][3] = { {1.45,2.87,3.05} ,{4.89,5.34,6.76} };
	cout << "二维数组在内存中所占用的内存空间为:" << sizeof(arr) << endl;
	cout << "二维数组第1行所占用的内存空间为:" << sizeof(arr[0]) << endl;
	cout << "二维数组第1个元素所占用的内存空间为:" << sizeof(arr[0][0]) << endl;
	cout << "这个二维数组有 " << sizeof(arr) / sizeof(arr[0]) << " 行 ";
	cout <<  sizeof(arr[0]) / sizeof(arr[0][0]) << " 列" << endl;
	
	system("pause");
	return 0;
}
运行结果:

 

2.2如何获取二维数组在内存中的首地址? 代码:
//2、可以获取二维数组在内存中的首地址
#include 
using namespace std;
int main()
{
	double arr[2][3] = { {1.45,2.87,3.05} ,{4.89,5.34,6.76} };
	cout <<"二维数组的首地址为:"<< arr << endl;
    cout <<"二维数组第1行的首地址为:" << arr[0] << endl;
	cout <<"二维数组第一个元素的地址为:"<< & arr[0][0] << endl;
	system("pause");
	return 0;
}
运行结果:

 与一维数组一样,第一个元素的首地址与第一行以及整个数组的首地址重合,因此结果相同。

这个地址是16进制表示的,可以用强制转换将16进制转换成10进制:

cout <<"二维数组的首地址为:"<< arr << endl;

改为

cout <<"二维数组的首地址为:"<< (int)arr << endl;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号