帕斯卡错误中的字符串



这是我的程序:

program str_err;
var st:string;
begin
      st:='ERROR';
      delete(st,2,1);
      writeln(st);
      write(st[5]);
      readln;
end.

我运行它,它表明st='EROR'st[5]='R'

我已经从字符串中删除了一个字符,st[5]必须'',而它仍然R

如果编译器使用范围检查,则尝试读取字符串末尾时会出现运行时错误。否则,您只会得到该内存空间中的任何垃圾。难怪它仍然被以前存在的同一个角色占据。删除前的st是5ERROR,删除后是4ERORR(字符串长度在前),所以R仍然存在。如果删除复制了字符串而不是将其随机打乱到位,您将获得随机垃圾。

最新更新