在delphi中可以用堆栈吗?应该怎么用呢?怎样入栈和出栈呢?

解决方案 »

  1.   

    uses Contnrs;
    使用TStack类
      

  2.   

    var
      a: Tstack;
      b: integer;
    begin
      b := 1;
      a := Tstack.Create;
      a.Push(b);
    end;
    为什么提示数据类型不匹配(整形和指针型)?
      

  3.   

    Tstack可以被称作万能标准堆栈,原因是 里面存放的是无类型指针(实际指针本身就是无类型的) 而不是 某个实体的副本
    所以他并不需要知道被存放对象的具体类型
    var
      a: Tstack;
      b: integer;
    begin
      b := 1;
      a := Tstack.Create;
      a.Push(pointer(b));
    end;
    这样就可以,还免去指针的麻烦,应为 integer与pointer类型本质上都是32位整数
    但对于delphi来说integer与pointer是完全不同的类型
      

  4.   

    pop呢?
    b := a.pop;
    或是
    b := int(a.pop);
    都不行!
      

  5.   

    asm
      push eax
      mov eax, [p]
      ....
      pop eax
    end;