初始化数组是不是保留其在 C/C++ 和类似语言中的顺序? [关闭]
Posted
技术标签:
【中文标题】初始化数组是不是保留其在 C/C++ 和类似语言中的顺序? [关闭]【英文标题】:Does an Initialized Array retain its order in C/C++ and similar languages? [closed]初始化数组是否保留其在 C/C++ 和类似语言中的顺序? [关闭] 【发布时间】:2016-03-23 13:24:56 【问题描述】:假设我有一个 C/C++ 数组:
int myArray[10] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
Java 中相同:
int[] myArray = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
以及其他编程语言中的等价物。
是否保证元素始终按照我在初始化时键入的顺序排列?例如:1, 2, 3, 4, 5, 6, 7, 8, 9, 10
.
注意:我已经针对 Java 编程语言询问过 this question,我知道这是真的。但我想知道这种行为是否是任何(或大多数)编程语言的规则,我不确定编辑是否是最好的询问方式。
【问题讨论】:
用一种无法保证的语言进行编程会非常困难。 我认为如果行为是其他任何东西,它就不会被称为数组。 如果您使用正确的容器,可以。有了一些字典,情况就完全不同了。 @Jarod42 容器是什么意思? 也许 Befunge 语言可以说是一种数组不保持顺序的语言。 en.wikipedia.org/wiki/Befunge 【参考方案1】:让我们听听 C 语言的创建者对此有何评论:
一个数组可以通过在其声明后面加上一个列表来初始化 用大括号括起来并用逗号分隔的初始化程序。为了 例如,用每个天数初始化一个数组 days 月份:
int days[] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
当数组的大小被省略时,编译器将计算 通过计算初始值设定项来计算长度,其中有 12 个 案子。如果数组的初始值设定项比指定的少 大小,对于外部、静态和自动,其他将为零 变量。初始化器过多是错误的。 没有 指定初始化器重复的方法,也不初始化 数组中间的元素而不提供前面的所有元素 价值观也是如此。 字符数组是初始化的一种特殊情况; 可以使用字符串代替大括号和逗号表示法:char pattern = "ould";
是更长但等效的简写char pattern[] = 'o', 'u', 'l', 'd', '\0' ;
在这种情况下,数组大小 是五个(四个字符加上终止的 '\0')。
C BRIAN W KERNIGHAN & DENNIS M RITCHIE,第二版,第 95 页。
【讨论】:
如果您引用,请说明您引用的具体内容。 谢谢,我正准备去但忘了。【参考方案2】:这两种情况都是一样的
int[] myArray = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ;
它会做的
int[0] = 1
int[1] = 2
.
.
.
int[9] = 10
它不会因语言而异 int[] array
是 java
的理想选择,只是为了程序方便 int array[]
是允许的。
【讨论】:
以上是关于初始化数组是不是保留其在 C/C++ 和类似语言中的顺序? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章