陣列的小標為什麼要從0開始,為什麼陣列下標從0開始而不是從1開始

2021-03-04 03:05:38 字數 3101 閱讀 1417

1樓:匿名使用者

這是c和c++規定,vb預設也是從0開始。這是因為在使用陣列元素,如a[i]時,是需要計算該元素在記憶體中的位址,為陣列的起始位址a,加上i個元素的偏移量,即a[i]的位址為a+i*元素型別的大小。當i=0(即下標為0)時,陣列的最開始的元素所在位址,就是陣列的起始位址。

即a[0]的位址,就是a這個陣列名。

2樓:匿名使用者

為了方便程式設計,也為了思路不被打亂。

3樓:匿名使用者

這個問題的主要原因是因為c語言是符合了組合語言的形式,當然也並不是所有的語言中的陣列下標都是從0開始的,在組合語言中通過基址變址方式定址,通過記憶體偏移量來取得相應的陣列中的數值,因為陣列中第乙個元素與陣列的偏移量為0 因此,為了方便起見,下標採用從0開始

4樓:匿名使用者

便於查詢陣列中的元素。

為什麼陣列下標從0開始而不是從1開始?

5樓:匿名使用者

陣列是一段連續的空間,要求a[i]就是求它

的位址,然後找到它。如果從0開始,則a[i]的位址= 首位址 + i*每個資料所佔的長度;如果從1開始,則a[i]的位址= 首位址 + (i-1)*每個資料所佔的長度。

是不是前一種更好計算呢。

為什麼陣列的下標要從0開始

6樓:匿名使用者

為了更好理解,我們舉個例子:

1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體位址;

為什麼陣列下標要從0開始

7樓:匿名使用者

乙個陣列的基位址是該陣列的第乙個元素位址,沒有要求

說下標必須從零開始,他們可以從任何乙個數開始,只要是連續的就可以,但是起始下標是零比較方便討論,因此我們一般都讓陣列從下標零開始,除非有很好的理由不這麼做。

8樓:匿名使用者

好計算位址偏移,你要是懂c語言就比較明白了。

9樓:匿名使用者

c語言的編譯器說從陣列從第0個開始,c語言就從第0個開始了。

10樓:

matlab中陣列下標從1開始

陣列下標都是從1開始的,為什麼說成是從0開始的呢?

11樓:仁昌居士

陣列下標說成是從0開始的是因為如果從1開始編號,每次隨機訪問陣列元素都多了一次減法運算,對於cpu來說,就是多了一次減法指令。陣列作為非常基礎的資料結構,通過下標訪問陣列元素又是其非常基礎的程式設計操作,效率的優化就要盡可能的做到極致。從0開始,可以減少一次減法操作。

12樓:匿名使用者

下標是指數組元素的索引號,vb預設是0,對於你的陣列dim a as variant

a=array(1,2,3,4)

a(0) 指第乙個元素,它的索引號是0,它的值是1

13樓:匿名使用者

option base 指定下標。一般是0或者是1.

儲存單元為什麼從0開始編址?c語言陣列下標為什麼要從0開始?

14樓:幻夢·人生

以陣列為例,陣列是使用連續的儲存空間儲存資料。

int a[4] = ;

陣列名a代表的就是這個儲存版空間的首位址。

1儲存的權位置就是儲存空間的首位址。

而2儲存的位置就是首位址加上1個int型所需空間的位址。

以此類推

所以a[n]元素的位址,實際上就是a的位址,加上n個元素的所佔空間大小

a[n]位址 = a位址 + sizeof(int) * n;

綜上所述,陣列的下表可以理解為距離首位址的偏移量。

所以第乙個元素距離首位址的偏移量為0;因為第乙個元素的位址,就是首位址。

15樓:牛津字典喝芬達

計算機中採用二進位制,不考慮符號的情況下最小數是"0x0000",所以在計算機中起始位置都是從0開始的

陣列下標為什麼從0開始而不是從1開始?

16樓:愛上榛子的核桃

你可以把陣列變數看成指標,陣列下標看成位址的偏移量。

因為陣列第乙個元素的位址偏移量一定是0,所以陣列下標就是從0開始了

17樓:匿名使用者

老大,這個問題也要問。非要懂得資料結構的人才能回答嗎?

想想就很明白了。

以下假設陣列下標是從1開始的:

如果你定義

int a[100];

那麼你在使用的時候用到第100個元素a[100]的時候,請問編譯器如何能分辨你這裡的a[100]和你定義的a[100]有什麼區別呢?

假設到此為止。

現在如果你下標是從0開始的,那麼a[0] - a[99]是元素,怎麼都不可能和定義的a[100]出現名字衝突,編譯器就很容易識別了。

就這麼簡單的問題~~~

18樓:匿名使用者

也可以從1開始啊,可能與0是最小自然數有關吧…

19樓:匿名使用者

鑽語法的牛角尖沒啥意思、

語法是規定好的

就像球只能進別人的門,進自已的裁判就要吹了

20樓:小雲

為什麼「1+1」答案是2,不是3?規定的唄,同樣的道理,陣列下標也規定從0開始。

程式設計常識13:陣列索引陣列下標為什麼要從0開始

21樓:追憶小土豆

為了更好理解,我們舉個例子:

1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體位址;

為什麼陣列角標從0開始

22樓:金色潛鳥

陣列下標 從幾開始,是由 語言本身規定的。

c/c++ 語言 從 0 開始。

fortran 語言 從 1 開始。

也有些語言允許 自己設定 範圍。

各有各的道理。

在C程式的陣列中為什麼下標要從0開始呢?從1開始不行嗎

可以,但是浪費了記憶體 比如開闢100個儲存,int array 100 是從0 99,而你是從一開始,必須是int array 101 了,之所以下標從0是因為pc的記憶體他的硬體實實在在就是從0位址開始索引的 陣列的位址與第乙個元素的位址相同,下標為多少也就是指偏移量為多少的位址,所有0開始比較...

java為什麼陣列下標從0開始,java的陣列是從零開始還是從壹開始的

陣列下標實際上是偏移量。a 0 和 a所指的都是第乙個元素。a 1 a 1 所以就有了從零開始的說法。java的陣列是從零開始還是從壹開始的 陣列下標是從0 開始的 都是從0的,沒有1的 只要記得陣列下標越界異常 就知道從0開始的 1 從0開始哈!親,你可以自己定義乙個陣列,假設int a 2 你列...

陣列下標為什麼從0開始而不是從1開始

你可以把陣列變數看成指標,陣列下標看成位址的偏移量。因為陣列第乙個元素的位址偏移量一定是0,所以陣列下標就是從0開始了 老大,這個問題也要問。非要懂得資料結構的人才能回答嗎?想想就很明白了。以下假設陣列下標是從1開始的 如果你定義 int a 100 那麼你在使用的時候用到第100個元素a 100 ...