技术交流,DH讲解.
记得很早之前我就说过,数组和结构体在内存中其实一样的,他们都是连续分布的.
例如:
1 2 3 4 |
|
这两个都占12字节,而且TMyStruct.A就是T3IntArray[0].
而我们知道在访问数组中某个元素的时候,只是在第一个元素的地址 + 序号 * 元素大小.
那么访问结构体应该也是这样的,只是结构体中每个元素的大小不一定都是一样的,而数组中每个元素都是一样的.
好的我们来看段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
其实这个P我们相当于定义一个TMyStruct的数组,有5个元素,但是我们定义的是一个指针,而且没有分配空间,我是在aArray的空间上面使用.
也就是过程结束的时候,aArray空间被收回,那么P也就消失了.看看反汇编代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
很清楚的看到了,访问和修改结构体中某个元素的值,也是在结构体指针上面进行偏移.
好的,下一次看看枚举.
放假了.在家米有网了.好好学习一下.