Delphi中动态数组地址深入解析
发布网友
发布时间:2022-12-22 04:15
我来回答
共1个回答
热心网友
时间:2024-11-24 08:46
Delphi中动态数组是一种使用非常灵活的数据类型,这里探讨几个和地址有关的概念:
1、数组地址:动态数组的数组地址(太拗口了),即动态数组存储数据的地址,一般我们用数组名称直接代替:
比如:
动态数组定义为:
x:array of integer;
x本身代表的是数组存储数据的地址。那么问题来了,x是一个变量名称,一般取地址不是@x吗?且看2↓
2、数组变量地址:这个说起来更拗口......动态数组变量的变量地址,怎么说呢?程序中定义了一个变量x(接上节),我们为x这个变量分配了一个地址,对比一下啊:
x:array of integer;
y:integer;
那么作为一个变量,我们老老实实取变量地址的时候,@x,@y,取出来的值是连续的,并且差值为4
3、数组元素地址:这个可以看作是一个普通变量的地址,取一个数组元素x[0],那么x[0]的取地址为@x[0],既然x是动态数组存储数据的地址,而x[n]是数组元素的地址,那么,x[0]=x,因为x[0]是数组的第一个元素,第一个元素的地址不就是数组存储数据的开始吗?!
综上:
对于定义:
x:array of double;
x:表示数组元素存储空间的首地址
@x:表示存储变量名称的地址
x[0]:表示数组的第一个元素
@x[0]:表示数组的第一个元素地址,等同于x