gpt4 book ai didi

delphi - 指向同一个数组的指针数组

转载 作者:行者123 更新时间:2023-12-03 15:08:40 29 4
gpt4 key购买 nike

我读过一段像这样的Delphi代码:

sample1  = ARRAY[1..80] OF INTEGER; 
psample =^sample1;

VAR
function :ARRAY[1..70] OF psample;

据我了解,程序员试图声明一个包含 70 个指针的数组,每个指针都指向一个 example1 数组。

所以当我写:

function[1]^[1] := 5;
function[1]^[2] := 10;

然后:

function[n]^[1] := 5 
function[n]^[2] := 10; ( n = 2 to 70)

正确吗?

最佳答案

您的代码示例缺少一些信息,因为您没有说明如何 function被定义为。这意味着您无法得出您试图得出的结论。

当然,因为 function是 Pascal 中的保留字,该代码甚至永远无法编译。我现在假设该变量名为 f .

考虑以下定义:

type
sample1 = array [1..80] of integer;
psample = ^sample1;

var
f : array [1..70] of psample;

在这里,sample1psample是类型。 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] 相同的整数对于所有有效的ij 。所以当你写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] 的值或任何其他值。

关于delphi - 指向同一个数组的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com