FreePascal初学者问题

3

我需要将一些FreePascal代码移植到C语言上。虽然我是专业的C开发人员,但对Pascal一窍不通。大部分代码可以很容易地移植,但有一行让我头疼。请问这行代码究竟是做什么用的:

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

这里让我困惑的是,newBack被分配给了curBackPtr,然后紧接着newBack.next又被分配给了curBackPtr,而curBackPtr从未被访问过。那么第一个赋值不就是多余的,可以安全地删除吗?或者我有什么地方理解错误了吗?

1
知道 foo^ 就像 C 语言中的 *foo,而 @(foo) 就像 C 语言中的 &foo,这有帮助吗? - Russell Zahniser
2个回答

8

enter image description here


3
你太闲了 - 哈哈。非常好! - 500 - Internal Server Error

0
New(newBack); 

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

curBackPtr^ := newBack;

将newBack指针分配给curBackPtr所指向的内容。

curBackPtr := @(newBack^.next);

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接