0

我怎样才能用帕斯卡写相当于这个?

void push(struct node **head, struct node **member)
{
  (*head)->next = *member;
  (*member)->prev = *head;
  (*member)->next = NULL;
  *head = *member;
}

我试过这样的事情:

procedure Push(head : nodeptr; prev : nodeptr; sym : nodeptr);
begin
    prev^.prev := sym;
    sym^.prev := prev;
    sym^.next := nil;
    prev := sym;
end;

事实上,我想知道如何在帕斯卡中做到这一点:*head = *member;两者都是struct node**二维指针类型。

编辑:我添加了我的帕斯卡编译器。这可能是相关的。

4

2 回答 2

2

从this tutorial on pascal pointer to pointer,你可以做这样的事情

program exPointertoPointers;
type
  iptr = ^integer;
  pointerptr = ^ iptr;
var
  num: integer;
  ptr: iptr;
  pptr: pointerptr;
  x, y : ^word;
begin
  num := 3000;
  (* take the address of var *)
  ptr := @num;
  (* take the address of ptr using address of operator @ *)
  pptr := @ptr;
  (* let us see the value and the adresses *)
  x:= addr(ptr);
  y := addr(pptr);
  writeln('Value of num = ', num );
  writeln('Value available at ptr^ = ', ptr^ );
  writeln('Value available at pptr^^ = ', pptr^^);
  writeln('Address at ptr = ', x^); 
  writeln('Address at pptr = ', y^);
end.
于 2013-12-20T18:35:47.863 回答
1

我认为你可以像这样做一个指向指针的指针:

type
   ptr = ^integer;
   ptr_ptr = ^ ptr;

然后像这样尊重它:

ptr_ptr ^^

因此*head = *member;大概应该是这样head^^ := member^^的。

于 2013-12-20T18:36:00.750 回答