什么是一致的数组?

8 arrays pascal

我试图弄清楚一致的数组是什么,但我无法在任何地方找到一个好的定义.任何人都可以解释这是什么,并给我一个基本的例子,他们的目的是什么?

谢谢

小智 12

所以这是一个非常古老的问题,但它在搜索结果的早期出现,所以让我给出正确的答案.

Conformant Array不是一个动态数组,它调整自身大小以适应数据,如Java的List类.它是一种允许Pascal过程和函数与可变大小数组一起工作的机制.

在Pascal中,数组的大小是其类型的一部分,因此在:

VAR
    MyArray1 : ARRAY [1..10] OF INTEGER;
    MyArray2 : ARRAY [1..20] OF INTEGER;
Run Code Online (Sandbox Code Playgroud)

MyArray1并且MyArray2两种不同的类型且不兼容.

这成为经典Pascal中的过程/函数的问题:因为过程的形式参数必须具有特定类型,并且因为数组的长度是其类型的一部分,所以通常不可能定义有效的过程/函数在任意长度的数组上.

Conformant Arrays是作为ISO标准Pascal的一部分引入的,通过允许以"符合数组"作为参数定义过程/函数来解决此问题,如下所示:

PROCEDURE MyProc(VAR x : ARRAY [low..high : INTEGER] OF INTEGER;
Run Code Online (Sandbox Code Playgroud)

这定义了MyProc具有三个形式参数的过程:x,, lowhigh(即,有三个参数以任意名称传递).调用过程时,x将其设置为指向数组的指针,是设置为数组low下限的整数变量,是设置为数组high上限的整数变量.

此机制允许数组边界以类型安全的方式与数组一起传递,并允许过程使用任意大小的数组.这是ISO标准Pascal定义的一个特性,但其他Pascals(例如Extended Pascal和Borland Pascal)提出了不同的机制来处理这个问题(例如,扩展Pascal的类型模式,它更丰富,更复杂).