我不明白源代码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。非常感谢
答案 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个字节仍然和以前一样