在使用Delphi的过程和字符串时,我遇到了一个问题。事实上,我期望看到输出字符串“1S2S3S4S5S6S”,但实际输出是“1234S5S6”。在调试过程中,它说S1、S2、S3和S6字符串变量未初始化(S1、S2、S3、S6是空字符串,S4和S5的值为'S')。有人能解释一下吗?以下是代码:
program StringTest;
{$APPTYPE CONSOLE}
procedure MyProcedure(S1: String; const S2: String; var S3: String;
S4: String; const S5: String; var S6: String;
out S7: String);
begin
S7 := '1' + S1 + '2' + S2 + '3' + S3 + '4' + S4 + '5' + S5 + '6' + S6;
end;
procedure Work;
var
S: String;
begin
S := 'S';
MyProcedure(S, S, S, S, S, S, S);
writeln(S);
end;
begin
Work;
readln;
end.
const
的参数时,你告诉编译器在函数执行期间不应该期望参数会发生变化。你需要确保自己遵守这个承诺;编译器无法为你检查它。在本例中,你正在通过S7
修改S
,同时声称S2
和S5
不会改变。 - Rob Kennedy