门|门CS 2012 |问题34

考虑下面给出的程序,在块结构的伪语言中,具有词法范围和允许嵌套的过程。

null
Program main;
  Var ...
  
    Procedure A1;
     Var ...
     Call A2;
    End A1
    
    Procedure A2;
      Var ...
  
      Procedure A21;
        Var ...
        Call A1;
        End A21
        
    Call A21;
  End A21
  
    Call A1;
  End main.

考虑主链:主语>a1->a2-> a21->a1。 正确的激活记录集及其访问链接如下所示:

gatecs2012activationrecord

gatecs2012activationrecord (A) A. (B) B (C) C (D) D 答复: (D) 说明: 访问链接被定义为指向程序文本中最近的词汇封闭块的激活记录的链接,因此A1、A2和A21的最近封闭块分别为main、main和A2,因为激活记录在程序进入时创建,在程序退出时销毁。

解决方案: 链接到程序文本中最近的词汇封闭块的激活记录。这取决于静态程序文本。

nitika_36

这里给出的调用顺序如下:,

Main->A1->A2->A21->A1 现在A1,A2是在Main下定义的,所以A1,A2接入链路指向Main,A21是在A2下定义的,因此它的接入链路将指向A2。

参考: http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html 这个解决方案是由 尼蒂卡·班萨尔

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享