Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在pascal中更改二维指针_C_Windows_Pointers_Pascal_Fpc - Fatal编程技术网

在pascal中更改二维指针

在pascal中更改二维指针,c,windows,pointers,pascal,fpc,C,Windows,Pointers,Pascal,Fpc,如何用pascal编写与此等效的代码 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 : nod

如何用pascal编写与此等效的代码

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;
事实上,我想知道如何在pascal中实现与此等效的功能:
*head=*member其中两者都是结构节点**
类型,2D指针


编辑:我已经添加了pascal编译器。这可能是相关的。

在本pascal教程中,您可以做类似的事情

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.

从本pascal教程中,您可以执行以下操作

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.

从本pascal教程中,您可以执行以下操作

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.

从本pascal教程中,您可以执行以下操作

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.

我想你可以做一个指向这样一个指针的指针:

type
   ptr = ^integer;
   ptr_ptr = ^ ptr;
然后像这样尊重它:

ptr_ptr ^^

因此,
*头=*成员
应该看起来像
head^^:=member^^

我想你可以像这样做一个指针:

type
   ptr = ^integer;
   ptr_ptr = ^ ptr;
然后像这样尊重它:

ptr_ptr ^^

因此,
*头=*成员
应该看起来像
head^^:=member^^

我想你可以像这样做一个指针:

type
   ptr = ^integer;
   ptr_ptr = ^ ptr;
然后像这样尊重它:

ptr_ptr ^^

因此,
*头=*成员
应该看起来像
head^^:=member^^

我想你可以像这样做一个指针:

type
   ptr = ^integer;
   ptr_ptr = ^ ptr;
然后像这样尊重它:

ptr_ptr ^^


因此,
*头=*成员应该看起来像
head^^:=member^

如何将指向记录类型的
x
指针分配给指向记录类型的
y
指针?我试过
x^.m:=y^在C中,它是
x->m=*y
其中声明为
struct node*x,**yx^.m:=@y^ptr
m
^ptr1
类型的记录的成员,该类型是记录自身的指针:
类型ptr1=^foo;ptr2=^ptr1;foo=记录m:ptr1。在这种情况下:
x^.m:=y^
x是
ptr2
ptr1
y
。如何将指向记录类型指针的
x
分配给指向记录类型指针的
y
?我试过
x^.m:=y^在C中,它是
x->m=*y
其中声明为
struct node*x,**yx^.m:=@y^ptr
m
^ptr1
类型的记录的成员,该类型是记录自身的指针:
类型ptr1=^foo;ptr2=^ptr1;foo=记录m:ptr1。在这种情况下:
x^.m:=y^
x是
ptr2
ptr1
y
。如何将指向记录类型指针的
x
分配给指向记录类型指针的
y
?我试过
x^.m:=y^在C中,它是
x->m=*y
其中声明为
struct node*x,**yx^.m:=@y^ptr
m
^ptr1
类型的记录的成员,该类型是记录自身的指针:
类型ptr1=^foo;ptr2=^ptr1;foo=记录m:ptr1。在这种情况下:
x^.m:=y^
x是
ptr2
ptr1
y
。如何将指向记录类型指针的
x
分配给指向记录类型指针的
y
?我试过
x^.m:=y^在C中,它是
x->m=*y
其中声明为
struct node*x,**yx^.m:=@y^ptr
m
^ptr1
类型的记录的成员,该类型是记录自身的指针:
类型ptr1=^foo;ptr2=^ptr1;foo=记录m:ptr1。在这种情况下:
x^.m:=y^
x是
ptr2
ptr1
y