数组名的用途c++

前天我们学习了什么是数组,今天我们来学习数组名的两大用途以及两个例题。

请先思考这几个个问题:

1)如何用数组名获取数组占用内存空间的大小;

2)如何获取数组的地址;

3)如何利用数组比较出数组内的最大值;

4)如何使得数组中元素逆置。

一:用数组名获取数组占用内存空间的大小:

用sizeof运算符计算内存(上一篇有介绍siaeof)

令该数组名称为arr

先看代码:

#include
using namespace std;
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建一个数组
	cout << "整个数组所站内存空间为:" << sizeof(arr) << endl;//利用sizeof运算符算出所占内存空间
}

输出结果是:

数组名的用途c++_第1张图片这里的40是怎么来的呢,原来是前面定义的是int整形,而int整形占用空间是4个字节,故4*10=40

加以拓展还可以算出(1)每个元素所占的内存空间及(2)数组的元素个数

(1)只需在数组后加一个[]并且在[]加入元素的位置。从首个元素start到最后一个end编号为0,1,2,3,4,5~~。

(2)求出整个数组的内存以及单个数组内存后,可以计算出该数组有多少个元素:

sizeof( arr ) / sizeof( arr[0] )即元素个数。

代码如下:

#include
using namespace std;
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建一个数组
	cout << "整个数组所站内存空间为:" << sizeof(arr) << endl;//利用sizeof运算符算出所占内存空间
	cout << "每个元素所占空间为:" << sizeof(arr[0]) << endl;
	cout << "数组元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
}

输出结果:

数组名的用途c++_第2张图片二,获取数组的地址:

获取地址直接cout就行,但是直接出来的是16进制的,所以在数组名的前面加一个(int)转换成10进制。

要单个元素地址呢还要在(int)后面加一个&。

代码如下

#include
using namespace std;
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建一个数组
	//cout << "整个数组所站内存空间为:" << sizeof(arr) << endl;//利用sizeof运算符算出所占内存空间
	//cout << "每个元素所占空间为:" << sizeof(arr[0]) << endl;
	//cout << "数组元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
	cout << (int) arr << endl;//数组的地址
	cout << (int)&arr[0] << endl;//首个元素的地址
}

输出结果:

数组名的用途c++_第3张图片可以看到数组的地址和首个元素的地址是相同的,而第二个字符呢,如图:

数组名的用途c++_第4张图片相差正好是4。

三,利用数组比较出数组内的最大值:

先认定一个最大值,再用for循环和if条件语句即可得出数组中的最大值。

代码如下:

#include
using namespace std;
int main()
{
	int arr[] = { 300,350,200,400,250 };//创建一个数组
	int max = 0;
	for (int i = 0; i < 5; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
		}
	}
	cout << "数组中的最大值是:" << max << endl;
}

输出结果:

数组名的用途c++_第5张图片四,使数组中元素逆置。

1)首先要将首末元素倒置则要先创造一个容器来暂存首末元素。

如int temp = arr[start]   存放首项

再arr[start] = arr[end]   转换首项的值

再arr[end] = int temp    完成一次转换

2)要想完成多个元素的转换则需要使用while循环。

在1)的基础上对start进行++,对end进行--再循环即可。

代码如下:

#include
using namespace std;
int main()
{
	int arr[] = { 1,2,3,4,5 };
	cout << "正序:" << endl;
	for (int i = 0; i < 5; i++)
	{
		cout << arr[i]<< endl;
	}
	cout << "倒序:" << endl;
	int start = 0;
	int end = sizeof(arr) / sizeof(arr[0]) - 1;
	while (start < end)
	{
		int temp = arr[start];
		arr[start] = arr[end];
		arr[end] = temp;
		start++;
		end--;
	}
	for (int i = 0; i < 5; i++) {
		cout<

运行结果如下:数组名的用途c++_第6张图片

你可能感兴趣的:(c++,算法,开发语言)