数组是保存一组同类元素的数据类型(同类、有序)
储存类型 数据类型 数组名[整型]
注意:①数组大小不能作为变量,一旦定义不可改变大小;②数组大小为0无意义;③数组名表示数组的首地址不可改变,例如:b=a✕ b[i]=a[i]✓
#define LEN1 10
const int LEN2=5;//定义1
double doubleArray1[LEN1],doubleArray2[LeN2];
constexpr int LEN2=5;//定义2
int LEN1=10,LEN2=5;
double doubleArray1[LEN1],doubleArray[LEN2];//定义3
定义3是非法的,因为LEN1和LEN2是变量,在某些编译器中,上述句也可能正确通过编译,但这只是编译器自己做的优化,不具备通用性。
1.一维数组:数组名[下标]
例如:a[b+1] b=4 a[a[0]+1] a[0]=1
初始化:单一数组赋值元素赋值、聚合方式赋值 int a[]={0,1,2}或int a[3]={0,1,2}
初始化表的长度短于要被初始化数组元素数目,那么剩余元素初始化为0。
内存映像:空间大小等于元素个数乘以每个元素所占空间的大小,C++并不保存每个下标变量的地址,只保存整个数组的起始地址
拓展:C++11中,范围for不仅可以遍历一组列出的数据,还可以遍历数组所有元素
for(i=0;i=10;i++)
cout<<a[i]<<'\t';//方式1
for(int x:a)cout<<x<<'\t';//方式2
for(auto x:a)cout<<x<<'\t';//方式3
2.查找:顺序查找、二分查找
3、排序
选择排序,冒泡排序(比较相邻元素)
4.二维数组
聚合赋值:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}={{1,2,3,4}{5,6,7,8}{9,10,11,12}}
部分赋值:int a[3][4]={1,2,3,4,5} int a[3][4]={{1,2}{3,4}{5}}
对全部元素都赋初值,定义数组时的第一维长度可省,部分元素定义时也可省略第一组长度,但应以分组的形式。
5.字符串
由一系列字符组成的一个数据,双引号
字符串变量:用字符类型的数组来表示
数组名是数组的起始地址,以'\0'表示字符串的结束
例:char ch[ ]={'H','e','l','l','o'} ✕ char ch[6]={'H','e','l','l','o'} ✓
空字符串不包含任何字符,占用空间一个字节
cin.getline(str) 可含空格
cin.get/getline(字符数组,长度,结束字符)get结束字符留在输入流中,getline将结束字符从输入流中删除。
库cstring中包含字符串处理函数
strlen(str) strcpy(a,b) strcat(a,b) 连接 strcmp(a,b) strlwr(str) 大转小 strupr(str) 小转大 strcpy(str1,str2,n) strncmp(str1,str2,n) strncat(str1,str2,n)