【发布时间】:2023-07-18 06:40:01
【问题描述】:
我读过我不能真正动态地分配一个帕斯卡数组,但我也在考虑实现一个字符串结构。
在 C 语言中,我会通过创建一个 struct 来解决它,其中包含一个指向字符数组(包含字符)、一个长度整数和一个大小的指针。然后,当它需要调整大小时,我会 malloc char * 和 realloc 它。
typedef struct {
size_t size;
size_t length;
char* contents;
} String;
这可以在 (ISO) 帕斯卡中完成吗?如果是这样,一个人会怎么做?我不想使用内置的 pascal 动态数组,因为它有点违背了创建自己的字符串类型的目的。
从 cmets 看来,ISO pascal(标准和扩展)似乎不支持这些东西。那我怎么用 free pascal 做呢?
【问题讨论】:
-
是的,这可以做到,而且可以通过许多不同的方式来做到。这也取决于您使用的是哪种 Pascal。今天使用了几种不同版本的 Pascal。 (FreePascal 和 Delphi 是其中的两个。)另外,根据您使用的 Pascal 的类型,dyn 数组方法可能不会太多地破坏目的。最后,我不知道你说不能“在 Pascal 中真正动态分配数组”是什么意思。
-
@AndreasRejbrand 我想到了 ISO 帕斯卡。我的意思是,因为数组都是它自己的类型,所以动态创建类型是行不通的。
-
标准 Pascal (ISO 7185) 没有 malloc、GetMem 或其他变长分配功能,因此似乎无法在符合标准的程序中分配变长
contents。 Extended Pascal (ISO 10206) 也没有。 -
@Doj 所以扩展的帕斯卡是标准帕斯卡?好的,注意到了。那么,帕斯卡真的是有限的吗?伤心。似乎是一门很好的语言
-
广泛使用的术语“标准帕斯卡”仅指 ISO 7185。术语“扩展帕斯卡”仅指 ISO 10206。这两个 ISO 标准都被认为已过时,主要用于教育目的. Free Pascal 和 Delphi 有自己的 Pascal 方言。