DELPHI 中如何定义这个静态二维数组常量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI 中如何定义这个静态二维数组常量相关的知识,希望对你有一定的参考价值。

Delphi 中定义静态二维数组

const
m:array[0..1] of array[0..1] of Integer=((5,8),(7,9));

以上是通过

但我现在有个问题,即二维数组的第二维长度不定,如:

((5,8,3),(7,9,0,5,4,1,2,6,7),(5,3,5,6,3))

这样如何定义这个静态常量。

要求:
必须像最上面的那句正确语句一样一句完成;
不能使用SetLength,MOVE等这类的函数。
我已找到其它解决办法了

虽然没有最佳答案,再等也不会有了。

分丢了可惜,给分吧。

参考技术A 在Delphi里面不能定义这样的常量,变量还是可以的.
Type
TA:Array of Integer;

var
A:Array of TA;
然后在用的时候注意setlength就好了本回答被提问者采纳
参考技术B 有点自相矛盾!

二维数组(初学者)

1、二维数组的定义:当数组中每个元素带有两个下标时,称这样的数组为二维数组。在逻辑上可以把二维数组看成是一个具有行和列的表格或一个矩阵。

一般形式:类型说明符 数组名[常量表达式1][常量表达式2];

例:定义a为3*4(3行4列)的数组,b为5*10(5行10列)的数组。

#include <stdafx.h>
#include<stdio.h>

void main()
{
    float a[3][4],b[5][10];
}

在内存中的表达:

例如:int a[3][4];说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型,该数组的下标变量共有3*4个。即:

a[0][0], a[0][1], a[0][2], a[0][3]

a[1][0], a[1][1], a[1][2], a[1][3]

a[2][0], a[2][1], a[2][2], a[2][3]

在C语言中可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。如以上a数组可以看成是由a[0]、a[1]、a[2]三个元素组成的一维数组,其中每个元素又是由四个整型元素组成的一维数组。建立起这一概念是十分重要的,因为C语言编译系统确实是把二维数组a中的a[0]、a[1]、a[2]作为数组名来处理的。

二维数组在概念上是二维的,但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。

如何在一维存储器中存放二维数组,有两种方式:一种是按行排列,即放完一行后顺次放入第二行。另一种是按列排列,即放完一列后再顺次放入第二列。在C语言中,二维数组是按行排列的。

衍生:多维数组的定义

定义三维数组:float a[2][3][4];

多维数组在内存中的排列:第一维的下标变化最慢,最右边的下标变换最快。

技术分享图片(图百度的=-=)

2、二维数组的引用和初始化

形式:数据类型 数组名[常量表达式1][常量表达式2]={初始化数据};

二维数组的初始化有四种方式:

(1)所赋初值个数与数组元素的个数相同

可以在定义二维数组的同时给二维数组的各元素赋初值。

例如:int a[4][3]={{1,2,3},{4,5,6}{7,8,9},{10,11,12}};

全部初值括在一对花括号中,之间用逗号隔开。

(2)每行所赋初值个数与数组元素个数不同

当某行一对花括号内的初值个数少于该行中元素的个数时,如:

int a[4][3]={{1,2},{4,5},{7},{10}};

系统将自动给该行后面的元素补初值0。因此,a[0][2]、a[2][1]的初值为0。也就是说,不能跳过每行前面元素二给后面的元素赋初值。

(3)所赋初值行数少于数组行数

当代表着给每行赋初值的行花括号对少于数组的行数时,如:

int a[4][3]={{1,2},{4,5}};

系统将自动给后面各行的元素补初值0。

(4)赋初值时省略行花括号对

在给二维数组赋初值时可以不使用行花括号对,如:

int a[4][3]={1,2,3,4,5}

系统将按a数组元素在内存中的排列顺序,将花括号中的数据一一对应的赋给各元素,若数据不足,系统将给后面的元素自动补初值0。

注:如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度则不能省。

例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于 int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

在定义时可以只对部分元素赋初值而省略第一维长度,但应分行赋初值。

例:int a[][4]={{0,0,3},{},{0,10}};

不建议使用

 

 

 

 

以上是关于DELPHI 中如何定义这个静态二维数组常量的主要内容,如果未能解决你的问题,请参考以下文章

delphi二维数组定义 赋值

DELPHI二维数组设置长度的时候出现了难以理解的问题!急求高人指教!

(文末送书)每日一练之二维数组

delphi如何定义一个二维的数组?比如数组1里面有a b c d.....同时a包含N个数组

C语言中的二维数组名是一个二重指针吗?

如何获取二维数组的列数