[英]Cannot construct dynamic array in dev-pascal
我还是一个初学者,所以如果这是一个愚蠢的错误或什么的,请原谅我。 我想写一个程序来生成从2到n的素数,n是用户定义的。 由于我在程序开始时不知道n,所以我想在之后构造一个动态数组和setlength(n)。 这是我的代码片段:
program D401;
type
arr = array of int64;
var
x : int64;
a : arr;
begin
readln(x);
setlength(a, x);
end.
但它不起作用,它说:致命:语法错误,[预期但发现了
我也试过这个:
program D401;
var
x : int64;
a : array of int64;
begin
readln(x);
setlength(a, x);
end.
但它也会产生同样的错误。 我还使用了 freepascal 和 GNU pascal,但它也不起作用。 是 dev-pascal 的问题还是没有更新之类的?
提前致谢。
Dev Pascal 很古老并且使用不支持动态数组语法的旧编译器。 简单地说,你今天不应该使用它。
如果你想要一个使用最新 Pascal 编译器的免费开发环境,最好的选择是 Lazarus,使用现代版本的 freepascal。
这在现代世界无关紧要。 但我正在为那些想要故意使用过时的 GNU Pascal 的人写我的答案。 我对 GNU Pascal 有一点了解,但建议采用基于指针的方法:
program dynarr;
type
TElem = integer;
TPArray = ^TElem;
var
pArray: TPArray;
length, i: INTEGER;
begin
length := 10;
GetMem(pArray, length * sizeof(TElem));
for i := 0 to length-1 do
(pArray+i)^:=i;
for i := 0 to length-1 do
writeln((pArray+i)^);
FreeMem (pArray, length * sizeof(TElem));
readln;
end.
使用--pointer-arithmetic
选项编译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.