0

这是我的程序:

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

4

1 回答 1

1

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

于 2012-06-06T16:06:03.303 回答