为什么不能在单个数组中使用多种数据类型? - 数据结构

时间:2019-01-22 06:32:13

标签: data-structures

一般来说,我知道像Java这样的强类型语言通常不允许在单个数组中使用多种数据类型。

我想知道为什么就数据结构而言(存储在内存中),单个数组中不可能有多种数据类型。

不同的数据类型将持有不同的位吗?由于有了这个索引元素,多个数据类型数组会出现问题吗?

2 个答案:

答案 0 :(得分:0)

所有强类型语言在编译时都会生成虚拟地址空间。 Java编译器等强类型语言,Java编译器应该知道数据时间,以便它将创建地址空间。其全部取决于编译器。检查所有分配,无论是显式分配还是通过方法调用中传递的参数分配,都具有类型兼容性。像某些语言一样,没有自动更正或冲突类型的转换。

谢谢,
拉姆

答案 1 :(得分:0)

很好的问题。

数组通常意味着您可以在固定时间内按索引访问数组中的任何元素,即O(1)。

在C / C ++中,如果创建200个32位整数的数组,它们都将存储在 连续的内存位置。

因此,如果要访问第10个元素,则可以将第10个元素的内存地址计算为

base address of the array + 4 * 9。然后在该地址读取32个字节作为第十个整数。 a[9]就是这样做的。

假设您允许在数组中存储不同类型的元素,那么您将无法执行此地址跳转,因为不同类型的项目将具有不同的大小,并且您不知道要乘以什么。

这违反了在O(1)中可以找到项目的承诺。

这就是为什么即使有可能,我们也不会将不同类型的项目放入数组中。绝对有可能做到。