C++总复习_数组

 一.数组
1.数组的定义

#define  N  7

const  int  size =15;//c++中的常量变量

int  m=9;

char  c1[8];//正确,使用常数

char  c2[N];//正确,使用宏定义

char  c3[size];//正确,使用常量变量

char  c4[size +8] ;//正确,使用常量变量与常数构成的表达式

char  c5[sizeof  m];//正确,使用sizeof运算符的表达式,sizeof运算符编译时求值

char  c6[m];//错误,m是变量

声明数组时,可以对其进行初始化。初始化数组时,初始值的个数不能大于数组元素的个数,数组声明未指定长度,按照初始值的个数确定数组元素的个数。例如:

int a1[6]={1,2,3,4,5,6};

数组a1长度为6,6个元素被初始化数值1至6。再如:

int a2[5]={1,7};

数组a2长度为5,前2个元素初始化为1和7,后3个元素初始化为0。再如:

int a3[]={1,2,3};

数组a3长度由初始值个数决定为3。

初始化char类型的数组时,除了可以使用多个char型常数值,也可以使用字符串作为初始值。使用字符串作为初始值时,除串本身外,字符串末尾自动加字符'\0'(数值0)一起存储在数组中,作为字符串结束的标志。字符数组初始化举例如下:

char c1[10]= {'A','B','C'};

前3个元素分别初始化为'A'、'B'、'C',其余初始化为'\0'。再如:

char c2[10]={65,66,67};

与c1初始结果相同,65、66、67、0分别为字符'A'、'B'、'C'、'\0'的整数表示。再如:

char c3[]={'A','B','C'};

数组c3长度由初始值个数决定为3。再如:

    char c4[]="ABC";

使用字符串初始化数组c4,字符串末尾自动加字符'\0',数组c4长度由初始值个数决定为4。再如:

char c5[3]="ABC";//错误

数组c5长度为3,最多容纳3个字符变量,初始值字符串"ABC"算上末尾字符'\0'一共4个字符,所以出现错误。

2.数组的表示方法

数组的名字代表数组首个元素的地址。除数组名外,表示数组首地址还有其它方法,例如:

int a[10];

a;//数组名表示数组首地址

&a;//在数组名前加取地址符,仍然表示数组首地址

&a[0];//第0个元素的地址,仍然表示数组首地址

3.数组表示方法的区别

A  a[10];

a;//表示数组的首地址

&a;//同样表示数组的首地址

这两种表示方法的区别在于,数组名a类似于数组元素的指针,即A * ,a表示数组元素a[0]的地址,a+1表示数组元素a[1]的地址,a+1与a的差值是一个数组元素所占的字节数(sizeof(A))。数组名前加取地址符&a,类似于数组的指针,即A(*)[10],&a+1与&a的差值是整个数组占的字节数(sizeof(A)*10)。

如果把n维数组理解为由n-1维数组作为数组元素的一维数组,便很容易得到n维数组名前加取地址符“&”后的数据类型。例如:

A  b[10][20];

数组名b近似A(*)[20](一维数组的指针),数组名前加取地址符&b近似A(*)[10][20](二维数组的指针)。


你可能感兴趣的:(C++,c,存储)