Program ConstTest;
Const constVar = 1;
Begin
constVar := 3;
WriteLn(constVar);
End.
Rõ ràng là mã trên sẽ không biên dịch, bởi vì nó không đúng để thay đổi giá trị của hằng số. Tuy nhiên, đoạn mã sau sẽ biên dịch, và sẽ trở lại "1; 5; 3;", mặc dù mảng là một const:Tại sao mảng Pascal const không thực sự là hằng số?
Program ConstTest;
Const constArr:Array [1..3] Of ShortInt = (1,2,3);
Var i:ShortInt;
Begin
constArr[2] := 5;
For i:=1 To 3 Do WriteLn(constArr[i],'; ');
End.
Vì vậy, những gì gây ra hành vi này? Tại sao hằng số không thực sự là hằng số?
Tôi đang sử dụng FreePascal Compiler 2.2.0 cho Win32.
Xem thêm http://stackoverflow.com/questions/48934/in-delphi-7-why-can-i-assign-a-value-to-a-const và http://stackoverflow.com/questions/2714365/delphi-all-hằng số-là-hằng-nhưng-một số-là-nhiều-hằng-hơn-những người khác. –