use*_*312 5 c arrays types data-structures
在像C这样的编程语言的上下文中,数组数据结构和数组数据类型之间有什么区别?
这是什么:int array[]={1, 2, 3, 4, 5};?
它是阵列数据结构还是阵列数据类型?为什么?
简短的回答:帮自己一个忙,只是忽略这两篇文章.我不怀疑作者的善意,但文章充其量令人困惑.
这是什么:
int array[]={1, 2, 3, 4, 5};?它是阵列数据结构还是阵列数据类型?为什么?
这两者都是.该文章中讨论的数组数据结构应该与C中实现的数组具体相关.数组数据类型概念应该更抽象,但C数组肯定是数组数据类型的一种实现.
答案很长:这两篇文章所考虑的差异是行为与实施之间的差异.正如文章中所使用的,数组数据结构是指按顺序存储在内存中的元素,因此您可以通过以下方式计算任何元素的地址:
address = (base address) + (element index * size of a single element)
Run Code Online (Sandbox Code Playgroud)
其中'base address'是索引0处元素的地址.
另一方面,数组数据类型是指提供由索引访问的元素的逻辑序列的任何数据类型.例如,C++提供了std :: vector,而Objective-C提供了NSArray和NSMutableArray,其中没有一个可能被实现为内存中连续的元素序列.
文章中使用的术语不是很有用.数组数据结构文章顶部给出的定义是:
数组数据结构或简单数组是由元素集合(值或变量)组成的数据结构,每个元素由至少一个索引标识
而为数组数据类型定义的是:
数组类型是一种数据类型,用于描述元素集合(值或变量),每个元素由一个或多个可在运行时计算的索引选择
数组数据结构文章(显然应该是关于数组的C风格实现)包括对关联数组和其他在数组数据类型文章中更合适的材料的讨论没有帮助.您可以通过阅读讨论页面来了解其原因,特别是分割文章和数组结构的提案.对这些文章唯一清楚的是,不同的作者无法对如何定义和解释"数组"做出集体思考.