我不明白源代码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。非常感谢
我的拙见是这样的;
让我们同意变量 AA 表示从 DSA 中 P1 的指针地址开始的 10 字节存储
语句 P1 = ADDR(BB);使 P1 指向 BB 的地址,然后 Display(AA);将显示等于 BB 的 10 个字符的字节
语句 P1 = ADDR(P2);使 P1 指向 DSA 中的另一个地址,即变量 P2 所在的位置。因此,display-语句显示 10 字节的存储,其中 4 个字节等于...好吧,还没有可预测的,因为指针 P2 尚未初始化
语句 P2 = ADDR(DD); 将 DD 的地址移动到 P2,下面的显示语句给出了 DD 在最前面的 4 个字节中的地址,接下来的 6 个字节恰好是 DSA 中的下一个字节 - 但是这 6 个字节与以前相同