Pointers Pascal链接列表到链接列表不起作用

Pointers Pascal链接列表到链接列表不起作用,pointers,linked-list,pascal,lazarus,Pointers,Linked List,Pascal,Lazarus,这是我为一个学校项目制作的两个链接列表。。。 我希望从第二个列表调用第一个列表,我已经这样做了,在编译时一切正常。当我运行它时,它会说: Project myProject引发异常类“外部:SIGSEGV”。 地址:40D32D 这是我的密码: list2=^ptr; ptr=record vlera:integer; pozicioni:integer; end; type list=^pointer; pointer=record

这是我为一个学校项目制作的两个链接列表。。。 我希望从第二个列表调用第一个列表,我已经这样做了,在编译时一切正常。当我运行它时,它会说: Project myProject引发异常类“外部:SIGSEGV”。 地址:40D32D 这是我的密码:

   list2=^ptr;
   ptr=record
       vlera:integer;
       pozicioni:integer;
   end;

type
   list=^pointer;
   pointer=record
       rreshti:list2;
   end;
   var
     a:array[1..7] of list;
     i:integer;
     kjovlere:list2;

begin
    for i:=1 to 7 do begin
        a[i]:=@kjovlere;
        write('Give the pozition for the row:',i,' : ');
        read(a[i]^.rreshti^.pozicioni);
        write ('give the value for this poziton :');
        read(a[i]^.rreshti^.vlera);
        writeln;
    end;
end.  
错误出现在for循环的reada[i]^.rreshti^.pozicioni处; 如果有人向我解释或给我任何建议,我将非常感激:

提供的源代码显示了至少两个关于Pascal中指针管理的误解

主要问题-为分配数据,应在分配之前分配记录类型

这个问题是指reada[i]^.rreshti^.pozicioni;和reada[i]^.rreshti^.vlera

[i]和rreshti都声明为指针类型list=^pointer;&列表2=^ptr;并应在分配数据之前分配给记录结构

步骤1:在循环中分配a[i]指针

new(a[i]);
new(a[i]^.rreshti);
步骤2:在循环中分配[i]^.rreshti指针

new(a[i]);
new(a[i]^.rreshti);
奇怪的问题-分配一个指向记录类型的指针时应考虑目标类型

此问题涉及行a[i]:=@kjovlere

a[i]是一个列表,它是list=^pointer;而不是list2 list2=^ptr;正如为kjovlere所声明的:list2

解决方案是:删除该行a[i]:=@kjovlere

解决方案:

提供的源代码显示了至少两个关于Pascal中指针管理的误解

主要问题-为分配数据,应在分配之前分配记录类型

这个问题是指reada[i]^.rreshti^.pozicioni;和reada[i]^.rreshti^.vlera

[i]和rreshti都声明为指针类型list=^pointer;&列表2=^ptr;并应在分配数据之前分配给记录结构

步骤1:在循环中分配a[i]指针

new(a[i]);
new(a[i]^.rreshti);
步骤2:在循环中分配[i]^.rreshti指针

new(a[i]);
new(a[i]^.rreshti);
奇怪的问题-分配一个指向记录类型的指针时应考虑目标类型

此问题涉及行a[i]:=@kjovlere

a[i]是一个列表,它是list=^pointer;而不是list2 list2=^ptr;正如为kjovlere所声明的:list2

解决方案是:删除该行a[i]:=@kjovlere

解决方案:


J.Piquard非常感谢您所做的所有解释J.Piquard非常感谢您所做的所有解释