定义:数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。
一.对数组的操作:
1.颠倒数组元素 -- reverse()函数
头文件:algorithm
作用:将array中的 [fist,last)的元素颠倒。
示例:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
reverse(a + 1, a + 4);
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
}
结果为:1 4 3 2 5 6 7 8 9 10
2.对数组元素进行排序 -- sort()函数
头文件:algorithm
作用:将array中的 [first,last)的元素进行排序。在默认情况下,数组进行升序排序;若增加返回类型可转换为bool型的函数,则返回值指示第一个传进的参数对应的元素顺序是否先于第二个参数。
示例:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[2]={2,1};
sort(a,a+2);
cout<<a[0]<<" "<<a[1];
}
结果为:1 2
二.区别数组指针和指针数组:
数组指针 本质上是指针,指向一维数组。
指针数组 本质上是数组,存放的元素是指针。
为什么要定义数组指针 ?
二维数组在内存中的存放形式与一维数组相同,都是内存中一段连续的空间,而系统并不会在定义二维数组时自动记录二维数组的行和列的大小。因此,如果想要实现指针的移动能以行为单位移动,就需要另一种指针类型,并且该指针需要包含一维数组的大小信息。而数组指针便有效地解决了这个问题。
例:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int *ptr=&a[0][0];
ptr++;
cout<<*ptr;
}
最终结果为2.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int (*ptr)[3]=&a[0];
ptr++;
cout<<**ptr<<endl;
}
最终结果为4.