加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 指向同一数组的指针数组

发布时间:2020-12-15 09:31:49 所属栏目:大数据 来源:网络整理
导读:我读过这样一段Delphi代码: sample1 = ARRAY[1..80] OF INTEGER; psample =^sample1;VAR function :ARRAY[1..70] OF psample; 根据我的理解,程序员试图声明一个包含70个指针的数组,每个指针指向一个sample1数组. 所以当我写: function[1]^[1] := 5;functio
我读过这样一段Delphi代码:

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

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

根据我的理解,程序员试图声明一个包含70个指针的数组,每个指针指向一个sample1数组.

所以当我写:

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

然后 :

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

那是对的吗 ?

解决方法

您的代码示例缺少一些信息,因为您没有说明函数是如何定义的.这意味着您无法得出您试图绘制的结论.

当然,由于函数是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磅样本的数组.

现在,在你甚至可以考虑写f [1] ^ [1]时会发生什么之前,我们需要为f的元素分配一些值.

假设我们这样做:

var
  sample: sample1;
...
for i := 1 to 70 do
  f[i] := @sample;

现在,对于所有有效的i和j,f [i] ^ [k]指的是与f [j] ^ [k]相同的整数.因此,当你写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]或任何其他值的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读