2012-03-23 177 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,也就是指向下一個指針本身,而不是它指向的內容。