您的代码示例缺少一些信息,因为您没有说明如何定义function
。这意味着你不能得出你试图画出的结论。
当然,由于function
是Pascal中的保留字,因此该代码甚至无法编译。我现在假设变量名为f
。
考虑以下定义:
type
sample1 = array [1..80] of integer;
psample = ^sample1;
var
f : array [1..70] of psample;
这里,sample1
和psample
的类型。 sample1
是描述80个整数数组的类型。 psample
是指向sample1
的指针。
接下来定义名为f
的变量。它是一组70 psample
s。
现在,在您甚至可以考虑编写f[1]^[1]
时会发生什么之前,我们需要为f
的元素分配一些值。
假设我们做了这样的:
var
sample: sample1;
...
for i := 1 to 70 do
f[i] := @sample;
现在,这将是真实的f[i]^[k]
指的是相同的整数f[j]^[k]
对所有有效i
和j
。因此,当您编写f[1]^[1] := 42
时,您还将该值分配给f[2]^[1]
,f[3]^[1]
等。
在另一方面,你可以做这样的:
var
samples: array [1..70] of sample1;
...
for i := 1 to 70 do
f[i] := @samples[i];
现在每个f[i]
指针指向内存中的一个独特的阵列。在这种情况下,分配f[1]^[1] := 42
不会修改f[2]^[1]
或任何其他值的值。
感谢大卫,这非常有帮助。 – 2012-02-02 21:43:50