将地址指针设置为PL / I中的指针

时间:2015-04-13 04:39:18

标签: pl-i

我不明白源代码PL / I:

      DCL AA CHAR(10)   BASED(P1);
      DCL BB CHAR(10)  INIT ("BBBBBBBBBB");
      DCL CC CHAR(10)  INIT ("CCCCCCCCCC");
      DCL DD CHAR(10)  INIT ("DDDDDDDDDDD");
      DCL ADDR BUILTIN;
      DCL P1 PTR;
      DCL P2 PTR;

        P1 = ADDR(BB);
        Display(AA);

        P1 = ADDR(P2);
        Display(AA);

        P2 = ADDR(DD);
        Display(AA);

帮我理解显示变量AA。非常感谢

1 个答案:

答案 0 :(得分:2)

在我的拙见中,它是这样的;

让我们同意变量AA表示从DSA

中的P1的指针地址开始的10个字节的存储

陈述P1 = ADDR(BB);使P1指向BB的地址,然后显示(AA);将显示10个字符的字节等于BB

陈述P1 = ADDR(P2);使P1指向DSA中的另一个地址,即变量P2所在的位置。因此display-statement显示10个字节的存储空间,其中4个字节等于...的地址,因为指针P2尚未初始化,所以没有任何可预测的

陈述P2 = ADDR(DD);将DD的地址移动到P2,下面的显示语句给出最前4个字节中DD的地址,后面的6个字节恰好是DSA中的下一个 - 但是这6个字节仍然和以前一样