0x01 一维数组
数组的长度定义不可以使用变量
若需要求数组长度可以使用 sizeof()
,方法如下:
int a[]= {0,1,5,4,9,4,32,8,4,4,65,4,5};
int leng = 0;
leng = sizeof(a)/sizeof(a[0]);
/*
*sizeof(a) 可以求出总体数组所占空间
*sizeof(a[0]) 可以求出移一位数组所占的空间从而求出整体
*/
字符串数组和字符数组的区别是:字符串数组结尾有一个 \0
,相同的内容字符串数组比字符数组多一位。
字符串数组:
char a[] = "hello word"
字符数组:char a[] = {'h','e'}
字符数组不可以使用 strlen()
求数组长度,因为函数是找到 \0
才结束寻找,所以我们在使用 memcpy()
复制时,需要使用 strlen("hello world")+1
。
0x02 二维数组
二维数组依旧是和一维数组同一种方式放在内存中的,都是以线性的方式存储,按行存储。
二维数组的遍历有先行后列,循环遍历;先列后行,循环遍历。两种方法前者效率更高,因为数组按行线性存储,后者的遍历容易引起缺页中断,降低了遍历的效率。
逗号表达式:(a,b)值为右边的结果,如:
(5,4)
结果值为 4 。
0x03 高维数组
高维数组就类似于二维数组一样的存在,利用二维数组类比即可了解高维数组。