Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是我的程序:
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='EROR'
st[5]='R'
我已经从字符串中删除了一个字符,并且st[5]必须删除'',而它仍然是R。
st[5]
''
R
如果您的编译器使用范围检查,您将在尝试读取字符串结尾时遇到运行时错误。否则,您只会得到该内存空间中的任何垃圾。难怪它仍然被以前在那里的同一个角色占据。st 删除前是 5ERROR,删除后是 4ERORR(字符串长度在前),所以 R 仍然存在。如果 delete 复制了字符串而不是将其改组,您将得到随机垃圾。