2012-03-23 146 views
3

我需要将一些代码从FreePascal移植到C.我是一名专业的C开发人员,但对Pascal一无所知。大部分代码可以很容易地移植,但是一行代码让我很头疼。究竟这是什么应该做的:FreePascal初学者问题

New(newBack); 
curBackPtr^ := newBack; 
curBackPtr := @(newBack^.next); 

这到底是怎么困惑我的是,newBack分配给curBackPtr后正确的newBack.next分配给curBackPtr没有curBackPtr曾经被访问的事实。是不是第一个任务是多余的,可以安全地删除?或者我在这里错过了什么?

+1

是否有助于知道'FOO ^'就像'* foo'在C,和'@(富)'是'一样 - foo'用C? – 2012-03-23 19:55:14

回答

8

enter image description here

+3

你的手上有太多时间了 - 哈哈。非常好! – 2012-03-23 20:34:40

+0

非常感谢,现在我明白了:) – Andreas 2012-03-23 21:15:43

0
New(newBack); 

为newBack类型分配内存并将指针存储在newBack中。

curBackPtr ^:= newBack;

将newBack指针赋值给curBackPtr指向的内容。

curBackPtr:= @(newBack^.next);

指定curBackPtr指向newBack^.next,也就是指向下一个指针本身,而不是它指向的内容。