一直感觉机组老师讲课特别棒,学习完编程语言底层的一些机制之后,感觉对数组指针和结构体的理解更透彻了,趁着还没有忘记先记录下来。
数组
一维数组
一个维度的数组在内存中是连续存储的,一个T arr[N]
的数组长度可表示为:N*sizeof(T)
。
我们在编程的时候,经常用数组名当做指针来使用,进而方便访问数组中的元素,例如我们有个数组int val[5]={1,5,2,1,3};
,这个数组名的相关属性举例如下(int类型变量4字节):
下面看一下汇编层面如何实现数组相关操作的,我们假设有这样几个数组:
#define ZLEN 5
typedef int zip_dig[ZLEN];
zip_dig tju = {
1, 5, 2, 1, 3 };
zip_dig nku = {
0, 2, 1, 3, 9 };
zip_dig pku = {
9