數(shù)組的下標(biāo)應(yīng)該是從0還是從1開始?
在其它一些語言中,情況可能有所不同,例如在BASIC語言中數(shù)組a[MAX]的元素是從a[1]到a[MAX],在Pascal語言中則兩種方式都可行。
注意:a[MAX]是一個有效的地址,但該地址中的值并不是數(shù)組a的一個元素。
上述這種差別有時會引起混亂,因為當(dāng)你說“數(shù)組中的第一個元素”時,實際上是指“數(shù)組中下標(biāo)為。的元素”,這里的“第一個”的意思和“最后一個”相反。
因為指針和數(shù)組幾乎是相同的,因此你可以定義一個指針,使它可以象一個數(shù)組一樣引用另一個數(shù)組中的所有元素,但引用時前者的下標(biāo)是從1開始的:
/*don'tdothis!!*/
inta0[MAX],
int*a1=a0-1;/*&a0[-1)*/
現(xiàn)在,a0[0]和a1[1)是相同的,而a0[MAX-1]和a1[MAX]是相同的。然而,在實際編程中不應(yīng)該這樣做,其原因有以下兩點:
第二,這種方式背離了C語言的常規(guī)風(fēng)格。