C编程语言被称为零索引阵列语言。 在阵列中的第一项是使用可访问的0
。 例如double arr[2] = {1.5,2.5}
中数组的第一项arr
是在位置0 arr[0] === 1.5
什么编程语言1个基于索引?
我听说过这些语言从1开始,而不是0的数组访问:大陵,MATLAB,行动!帕斯卡,Fortran语言,COBOL。 这是完整的?
Specificially,1-基于阵列将与1,而不是零访问的第一项。
C编程语言被称为零索引阵列语言。 在阵列中的第一项是使用可访问的0
。 例如double arr[2] = {1.5,2.5}
中数组的第一项arr
是在位置0 arr[0] === 1.5
什么编程语言1个基于索引?
我听说过这些语言从1开始,而不是0的数组访问:大陵,MATLAB,行动!帕斯卡,Fortran语言,COBOL。 这是完整的?
Specificially,1-基于阵列将与1,而不是零访问的第一项。
名单上可以找到维基百科 。
ALGOL 68
APL
AWK
CFML
COBOL
Fortran
FoxPro
Julia
Lua
Mathematica
MATLAB
PL/I
RPG
Sass
Smalltalk
Wolfram Language
XPath/XQuery
Fortran语言从1开始。我知道,因为我的爸爸用于FORTRAN程序在我出生前(我33了),他确实批评了现代编程语言为从0开始,说这是不自然的,人类没有怎么想的,不像数学和等等。
不过,我觉得事情从0开始很自然的; 我的第一个真正的编程语言是C和*(PTR + N)就不会这么好听如果n没有在零开始工作!
的语言一个相当大的列表是在维基百科下编程语言(阵列)的比较 “阵列系统交叉引用列表”下表(默认基索引列)
这具有1-与0-索引一般一个良好的讨论和订阅
从博客引用:
由EW Dijkstra算法,1982年EWD831。
当与长度为N的序列处理,其中,我们希望由下标区分元件,下一个令人烦恼的问题是什么下标值分配给它的启动元件。 用下标1开始时附着于约定)的产率,中,下标范围1≤I <N + 1; 从0开始,然而,给出了更好的范围0≤I <N.因此,让我们让我们的序数从零开始:一个元素的序数(下标)等于所述序列中它前面的元素的数量。 而故事的寓意是,我们有-after所有这些百年好一点! - 零作为最自然数。
备注::很多编程语言已经被设计为无适当注意这个细节。 在FORTRAN标总是从1开始; 在ALGOL 60和PASCAL,会议c)中已被采用; 更近的SASL已回落在FORTRAN约定:在SASL序列是在同一时间上的正整数的函数。 可怜! (注完。)
Fortran语言,MATLAB,帕斯卡尔,大陵,Smalltalk和许多其他许多人。
你可以在Perl做
$[ = 1; # set the base array index to 1
你也可以把它开始与42,如果你觉得这样的。 这也影响字符串索引。
事实上,使用功能非常气馁。
此外,在阿达您可以根据需要定义数组索引:
A : array(-5..5) of Integer; -- defines an array with 11 elements
B : array(-1..1, -1..1) of Float; -- defines a 3x3 matrix
有人可能会说,用户定义的数组索引范围将导致维护问题。 然而,这是正常写Ada代码,其中不依赖于该阵列的索引的方法。 为了这个目的,该语言提供元素的属性,这是对于所有定义的类型自动定义:
A'first -- this has the value -5
A'last -- this has the value +5
A'range -- returns the range -5..+5 which can be used e.g. in for loops
Erlang的元组和列表指数从1开始。
JDBC(不是一种语言,而是API)
String x = resultSet.getString(1); // the first column
卢阿 - 令人失望
找到一个- 的Lua(编程语言)
检查数组一节它说 -
“的Lua阵列1基于:所述第一索引为1而不是0,因为它是许多其他的编程语言(虽然为0的显式索引是允许的)”
VB经典,至少通过
Option Base 1
在字符串德尔福从1开始。
(静态阵列必须具有下界明确指定的。动态数组总是从0开始。)
ColdFusion的 - 即使它是Java的引擎盖下
有和Pascal。
PL / SQL 。 使用从0开始的时候语言与甲骨文互动,你需要自己处理0-1转换为通过索引数组访问这样的一个结果是。 在实践中,如果你使用像一个结构foreach
的名字在行或列的访问,这不是大问题,但你可能想在最左边一列,例如,这将是第1列。
在指标之一CFML开始。
多种语言,包括帕斯卡尔整个Wirthian线,在Object Pascal,Modula-2的,Modula-3语言,奥伯伦,奥伯伦2和Ada(加上其他一些我可能忽略的)允许阵列从你喜欢什么,包括点进行索引,很明显,1。
二郎索引的元组,并从1阵列。
我想,但我不再是积极的,是陵和PL / 1两个指数从1我也敢肯定,Cobol的指数从1。
从1索引前C基本上大多数高级编程语言(汇编语言是显而易见的原因,一个显着的例外 - 从0原因Ç指标),从C-主导的霸权之外的许多语言仍然这样做的这一天。
还有的Smalltalk
Visual FoxPro中,FoxPro和快船都使用阵列,其中元件1是一个数组的第一个元素。我认为这是你的意思是由1索引。
我看到,FORTRAN的知识,这里仍然在'66版本。
的Fortran具有可变的较低和数组的上限。
也就是说,如果你声明一个数组,如:
real, dimension (90) :: x
然后1将下限(默认)。
如果你声明它像
real, dimension(0,89) :: x
然后但是,它将有一个下界0。
如果在另一方面,你声明它像
real, allocatable :: x(:,:)
那么你可以把它分配给任何你喜欢的。 例如
allocate(x(0:np,0:np))
装置阵列将具有元件
x(0, 0), x(0, 1), x(0, 2 .... np)
x(1, 0), x(1, 1), ...
.
.
.
x(np, 0) ...
也有一些更有趣的组合可能:
real, dimension(:, :, 0:) :: d
real, dimension(9, 0:99, -99:99) :: iii
其留做家庭作业,有兴趣的读者:)
这些只是我想起了我的头顶部的人。 由于FORTRAN的主要优势之一是阵列处理能力,很显然,在有很多是其他与出局此处不再赘述。
没有人提到的XPath。
数学和千里马,除了其他语言已经提到。
Informix中,除了其他语言已经提到。
基本功能 - 不只是VB,但所有的旧时代,20世纪80年代编号行版本。
理查德
FoxPro中使用的阵列开始于索引1。
的dBASE使用阵列开始于索引1。
阵列(开始)以dBASE
RPG,包括现代RPGLE
虽然C是由索引设计0,所以能够在C的阵列安排就好像它是1(或任何其他值)索引进行访问。 不是你所期望的一个普通的C编码器要经常做的,但它有时帮助。
例:
#include <stdio.h>
int main(){
int zero_based[10];
int* one_based;
int i;
one_based=zero_based-1;
for (i=1;i<=10;i++) one_based[i]=i;
for(i=10;i>=1;i--) printf("one_based[%d] = %d\n", i, one_based[i]);
return 0;
}