-1
由於無法創建引用(是否存在?)我必須使用指向另一個指針的指針來執行此操作。這給了我一個錯誤:Pascal指針指針SyntaxError和不兼容類型
type
PNode = ^TNode;
TNode = record
char: char;
next: PNode;
children: PNode;
end;
PPNode = ^PNode;
var
current_node: PPNode;
function find_or_insert_peer(var node: PNode; character: char): PNode;
current_node := @find_or_insert_peer(current_node^, character)^.children;
x.pas(121,23) Error: Incompatible types: got "<address of function(var PNode;Char):^TNode;Register>" expected "PPNode"
x.pas(121,43) Fatal: Syntax error, ";" expected but "(" found
Fatal: Compilation aborted
我也試過,但它並不能編譯,因爲的SyntaxError
current_node := @(find_or_insert_peer(current_node^, character)^.children);
編輯的
請幫助。我甚至用C++創建了一個演示來向你展示這是合法的。 http://cpp.sh/8mxe
爲什麼你認爲在'current_node'賦值時需要@ @? – MartynA
你試圖將'find_or_insert_peer'函數的地址分配給'PPNode',並且顯然不起作用。實際上**在錯誤信息中讀取單詞**非常重要,它清楚地告訴您問題是什麼以及兩種類型之間爲什麼不兼容。 –
@KenWhite我做到了,這就是爲什麼我試圖添加圓括號來強調我想要記錄的地址(記錄指針由函數返回)的屬性。我只讀了一個SyntaxError – Adam