在像C这样的编程语言的上下文中,数组数据结构和数组数据类型之间有什么区别?

Wikipedia区分arrays数据结构和arrays数据类型 。

在像C这样的编程语言的上下文中,数组数据结构和数组数据类型之间有什么区别?

这是什么: int array[]={1, 2, 3, 4, 5};

它是arrays数据结构还是arrays数据类型? 为什么?

简短的回答:帮自己一个忙,只是忽略这两篇文章。 我不怀疑作者的善意,但文章充其量令人困惑。

这是什么: int array[]={1, 2, 3, 4, 5};

它是arrays数据结构还是arrays数据类型? 为什么?

这两者都是。 该文章中讨论的数组数据结构应该与C中实现的数组具体相关。 数组数据类型概念应该更抽象,但C数组肯定是数组数据类型的一种实现。

答案很长:这两篇文章所考虑的差异是行为与实施之间的差异。 正如文章中所使用的, 数组数据结构是指按顺序存储在内存中的元素,因此您可以通过以下方式计算任何元素的地址:

 address = (base address) + (element index * size of a single element) 

其中’base address’是索引0处元素的地址。

另一方面, 数组数据类型是指提供由索引访问的元素的逻辑序列的任何数据类型。 例如,C ++提供了std :: vector,而Objective-C提供了NSArray和NSMutableArray,其中没有一个可能被实现为内存中连续的元素序列。

文章中使用的术语不是很有用。 数组数据结构文章顶部给出的定义是:

数组数据结构或简单数组是由元素集合(值或变量)组成的数据结构,每个元素由至少一个索引标识

而为数组数据类型定义的是:

数组类型是一种数据类型,用于描述元素集合(值或变量),每个元素由一个或多个可在运行时计算的索引选择

数组数据结构文章(显然应该是关于数组的C风格实现)包括对关联数组和其他在数组数据类型文章中更合适的材料的讨论没有帮助。 您可以通过阅读讨论页面来了解其原因,特别是分割文章和数组结构的 提案 。 对这些文章唯一清楚的是,各种作者无法对如何定义和解释“数组”做出集体思考。

类型是程序员看到的东西; 数据结构是在幕后实现某些东西的方式。 可以想象,数组类型是在幕后实现的,例如哈希表(我认为这就是PHP的情况)。

在C中,没有区别; 必须使用连续的内存块实现数组类型。

数组的结构决定了数组的实现方式(存储和访问),数据类型是指数组中包含的数据类型。 为了您的阅读乐趣,请阅读每个链接。

Brackets []是您在C中指定arrays数据类型的方式

类似, *是你如何在C中指定指针数据类型

int array[]={1, 2, 3, 4, 5}; 是C中的数组数据结构的示例

具体来说,您已经定义了一个具有5个连续排列的整数的数据结构,您已在该堆栈上为该数据结构分配了足够的内存,并且已使用值1,2,3,4,5初始化该数据结构。

C中的数据结构具有非零大小,可以通过在该结构的实例上调用sizeof()来找到它。