c 中用数组存储类对象?java中能否用数组存放不同的类

一、c语言数组的定义

C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。

在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符;数组名;[常量表达式]。

其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:

int a[10];/*说明整型数组a,有10个元素*/

float b[10], c[20];/*说明实型数组b,有10个元素,实型数组c,有20个元素*/

char ch[20];/*说明字符数组ch,有20个元素*/

对于数组类型说明应注意以下几点:

1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2、数组名的书写规则应符合标识符的书写规定。

3、数组名不能与其它变量名相同。例如:

int a;

float a[10];

是错误的。

4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。

5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:

#define FD 5

//...

int a[3+2],b[7+FD];

是合法的。但是下述说明方式是错误的。

int n=5;

int a[n];

6、允许在同一个类型说明中,说明多个数组和多个变量。例如:

int a,b,c,d,k1[10],k2[20];

扩展资料:

C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。

二、数组的分类

数组分类

1.数组是由一组有序的值或键值对组成的数据结构

2.数组根据键名类型分为:索引数组与关联数组二大类

3.索引数组:键名是元素的位置索引,默认从0开始,采用系统自动处理可以省略键名

4.关联数组:键名是自定义的字符串,类似于对象中的属性列表

数组类型

编辑语音

多维数组

有时需要追踪记录数组中的相关信息。

例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的 X、Y坐标。这时应该用多维数组存储值。

可用 Visual Basic声明多维数组。

例如,下面的语句声明了一个过程内的 10× 10的二维数组。

Static MatrixA(9,9) As Double

可用显式下界来声明两个维数或两个维数中的任何一个:

Static MatrixA(1 To 10,1 To 10) As Double

可以将所有这些推广到二维以上的数组。例如:

Dim MultiD(3,1 To 10,1 To 15)

这个声明建立了三维数组,大小为 4× 10× 15。元素总数为三个维数的乘积,为 600。

注意

在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant数组时更要格外小心,因为他们需要更大的存储空间。

用循环*作数组

可以用 For循环嵌套有效的处理多维数组。例如,在 MatrixA中基于每个元素在数组中的位置为其赋值:

Dim I As Integer,J As Integer

Static MatrixA(1 To 10,1 To 10) As Double

For I= 1 To 10

For J= 1 To 10

MatrixA(I,J)= I* 10+ J

Next J

Next I

一维数组

定义

一维数组是简单的数组,其逻辑结构是线性表。要使用一维数组,需经过定义、初始化和应用等过程。

数组声明

在数组的声明格式里,“数据类型”是声明数组元素的数据类型,可以是java语言中任意的数据类型,包括简单类型和结构类型。“数组名”是用来统一这些相同数据类型的名称,其命名规则和变量的命名规则相同。

数组声明之后,接下来便是要分配数组所需要的内存,这时必须用运算符new,其中“个数”是告诉编译器,所声明的数组要存放多少个元素,所以new运算符是通知编译器根据括号里的个数,在内存中分配一块空间供该数组使用。利用new运算符为数组元素分配内存空间的方式称为动态分配方式。

举例:

int[]x;//声明名称为x的int型数组

x=new int[10];//x数组中包含有10个元素,并为这10个元素分配内存空间

在声明数组时,也可以将两个语句合并成一行,格式如下:

数据类型[]数组名= new数据类型[个数];

利用这种格式在声明数组的同时,也分配一块内存供数组使用。如上面的例子可以写成:

int[]x= new int [10];

等号左边的int[]x相当于定义了一个特殊的变量x,x的数据类型是一个对int型数组对象的引用,x就是一个数组的引用变量,其引用的数组元素个数不定。等号右边的new int[10]就是在堆内存中创建一个具有10个int型变量的数组对象。int[]x= new int [10];就是将右边的数组对象赋值给左边的数组引用变量。[5]

二维数组

定义

前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。二维数组类型说明的一般形式是:

类型说明符数组名[常量表达式1][常量表达式2]…;

其中常量表达式1表示第一维下标的长度,常量表达式2表示第二维下标的长度。例如:

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[0]行,再存放a[1]行,后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为

int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节(数组中每一格为一字节)。

三维数组

三维数组,是指维数为三的数组结构。三维数组是常见的多维数组,由于其可以用来描述三维空间中的位置或状态而被广泛使用。

三维数组就是维度为三的数组,可以认为它表示对该数组存储的内容使用了三个独立参量去描述,但更多的是认为该数组的下标是由三个不同的参量组成的。

数组这一概念主要用在编写程序当中,和数学中的向量、矩阵等概念有一定的差别,主要表现:在数组内的元素可以是任意的相同数据类型,包括向量和矩阵。

对数组的访问一般是通过下标进行的。在三维数组中,数组的下标是由三个数字构成的,通过这三个数字组成的下标对数组的内容进行访问。

三、java中能否用数组存放不同的类

在java中数组是不可以存放不同数据类型的。只能存放同一种数据类型。

但是,我们可以通过map来实现数组存放不同的数据类型。

Map**没有继承Collection接口,其提供的是key到value的映射,Map中不能包含相同的key值,每个key只能影射一个相同的value.key值还决定了存储对象在映射中的存储位置.但不是key对象本身决定的,而是通过散列技术进行处理,可产生一个散列码的整数值,散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置.Map**包括Map接口以及Map接口所实现的类.

四、C语言中的数组什么意思

所谓数组,是有序的元素序列。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的**称为数组。

比如油烟机的风扇转速会和工作的模式之间有一定的关系,那么我们就可以把它的工作模式和一维数组的下标对应起来,我们将具体的转速放在数组中,这样的话就非常方便我们在日后查询。

再比如说家中的冷暖灯光控制这方面,色温灯里会有两个灯珠,分别对应的是冷光和暖光,选择不同的模式灯光的颜色就不同,我们就可以将这两种灯光的亮度pwm值事先放在二维数组中,以便调用调光。

在程序中合理地使用数组,会使程序的结构比较整齐,而且可以把较为复杂的运算,转化成简单的数组来表示。

扩展资料:

一、使用规则:

1、可以只给部分元素赋初值。当{}中值的个数少于元素个数时,只给前面部分元素赋值。

2、只能给元素逐个赋值,不能给数组整体赋值。

(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)

3、若不给可初始化的数组赋初值,则全部元素均为0值。

4、假如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。

动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

二、表示方法:

数组元素是组成数组的基本单元。

数组元素也是一种变量,其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标]其中的下标只能为整型常量或整型表达式。

如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。在C语言中只能逐个地使用下标变量,而不能一次引用整个数组。

参考资料:百度百科-数组

相关文章

SHARP夏普质量测评好不好

SHARP夏普质量测评好不好

很多小伙伴在关注SHARP夏普怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

TCL雷鸟50英寸雀5质量好不好

TCL雷鸟50英寸雀5质量好不好

很多小伙伴在关注TCL雷鸟50英寸雀5怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

TCL雷鸟口碑怎么样

TCL雷鸟口碑怎么样

很多小伙伴在关注TCL雷鸟怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

亚美嘉擦镜纸测评分享

亚美嘉擦镜纸测评分享

很多小伙伴在关注亚美嘉擦镜纸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

网易有道词典笔X3s旗舰版点读笔英语学习翻译神器图文测评

网易有道词典笔X3s旗舰版点读笔英语学习翻译神器图文测评

很多小伙伴在关注网易有道词典笔X3s旗舰版点读笔英语学习翻译神器怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产...

酷狗KUGOUPB11质量好不好

酷狗KUGOUPB11质量好不好

很多小伙伴在关注酷狗KUGOUPB11怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...