目录
二维数组的arr一般表示第一个一维数组的整个数组地址,类型是int (*)[2]。
数组
在内存中开辟地址连续的若干个空间,存放同类型的变量。用数组下标可以访问数组元素。
数组下标增长,地址是由低变高,已知首地址可以求他的地址。
下标范围:0~数组元素-1
数组结构:元素类型 数组名[元素数量]={数组元素,...};
int arr[10]={1,2,3};//不完全初始化,剩余的为0
int arr[3]={1,2,,3};//完全初始化
int arr[]={1,2,3};//数组元素数量可省略
int arr[3]={0};//所有元素都为0
特殊的字符数组
char arr[]="ab"//有三个字符'a','b','\0'
char brr[]={'a','b'}//只有两个字符,用strlen求字符长度时会出现乱码
全局数组不初始化默认为0,局部数组不初始化随机值。
int arr[10];//元素值默认为0
int main()
{
int brr[10];//随机值
return 0;
}
如何求字符长度?
字符型数组
int sz=strlen(arr);
int sz=sizeof(arr)/sizeof(arr[0])-1;
整型数组
int len=sizeof(arr)/sizeof(arr[0])
*sizeof
sizeof是操作符,求空间大小(单位字节)
数组空间大小=单个元素大小*数组长度(数组个数)。
二维数组
二维数组在内存中也是连续开辟空间的,和一维数组类似,可以看成数个地址连续的一维数组拼在一起。
二维数组的元素是一维一整个数组。
int arr[3][2]={{1,2},{3}};
1,2
3,0
0,0
*3表示行,2表示列,行可以省略,列不能省略
用{}表示一行数组内容。
数组的访问:数组名的含义和下标的使用
数组名(arr)表示首元素地址。
除了sizeof(arr)和&arr表示整个数组,其余情况都表示数组首元素地址,包括传参时。
二维数组的arr一般表示第一个一维数组的整个数组地址,类型是int (*)[2]。
下标
访问一维数组第n个元素
arr[n-1]
*(arr+n-1)
两种方式等价,由此可以发现中括号和解引用符号相同。
访问二维数组第n+1行m+1列元素
arr[n][m]
*(arr[n]+m)
*(*(arr+n)+m)
*arr等价于arr[0]。