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

亚当

正如在文章中链接的俏皮文章“寻址指针”中所提到的那样@运算符可能不适用于更复杂的表达式。它的等效功能addr()可以解决问题。

current_node := addr(find_or_insert_peer(current_node^, character)^.children);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章