数组(array)是一种数据格式,能够存储多个同类型的值。
一维数组:
int a[3]={1,2,3};
char a[10]="this is a";共有9个字符,包含空字符,a[9]将被系统自动赋值为'\0',定义字符数组,需要考虑到为最后的一个结束符'\0'预留出一个位置,
char数组还可以这样赋值:char a[10]={'t','h','i','s'};
上面两个数组都是在声明语句中初始化数组元素,若int a[5]={1,2,3},a[3]和a[4]将被系统自动初始化为0。
不允许int a[3];
a={1,2,3};
如果声明数组时没有初始化,则需要单独对每个元素赋值。
一维数组的数组名都是指针
int a[10]={0,1,2,3,4,5,6,7,8,9};
cout<<a<<endl;
结果将输出存储该数组的内存的首地址。
char a[10]="this is a";
cout<<a<<endl;
结果将输出this is a
动态分配数组将需要使用指针,例如:
int *a=new int[3]; //申请了一个数组
a[1]=1;
cout<<a[1]<<endl;
delete [] a; //将申请的内存释放
结果将输出1
二维数组:
二维数组其实就是数组的数组,即每个元素都是数组的数组。
int a[2][2]={1,2,3,4};
int a[2][2]={{1,2},{3,4}};
char week[7][4]={
"Mon","Tue","Wed","Thu","Fri","Sat","Sun"
};
cout<<week[0]<<endl;
结果输出Mon
二维指针数组动态分配
int **p;
p=new int*[10];
for(int i=0;i!=10;i++){
p[i]=new int[5]; //int*[10]表示一个有10个元素的指针数组
}
···
for(int i=0;i<10;i++){ //将申请的内存释放掉,这点很重要
delete [] p[i];
}
delete [] p;