為什麼在資料結構教科書上的陣列是由1開始而不是由0開始

2021-04-15 12:28:08 字數 2545 閱讀 6933

1樓:匿名使用者

你看到是不是連結串列?

有些連結串列為了表示方便,第0位沒有「資料段」。

就好比陣列a[0],沒有值一樣,但是它仍然是實實在在存在的。

2樓:匿名使用者

書上這樣寫應該是為了更容易看懂吧,實際上都是從0開始的.只要明白語法,讀寫對應就可以了,不必要管從幾開始.有很多應用都不是從頭開始的.

3樓:匿名使用者

不同的語言有不同的規則

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

4樓:匿名使用者

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

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

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

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

5樓:愛上榛子的核桃

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

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

6樓:匿名使用者

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

想想就很明白了。

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

如果你定義

int a[100];

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

假設到此為止。

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

就這麼簡單的問題~~~

7樓:匿名使用者

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

8樓:匿名使用者

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

語法是規定好的

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

9樓:小云

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

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

10樓:仁昌居士

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

11樓:匿名使用者

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

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

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

12樓:匿名使用者

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

為什麼c語言的陣列下標從0開始而不是從1開始

13樓:匿名使用者

一種約定。

如果最初約定從1開始 那也沒什麼

至於為什麼會選擇從0開始,最重要的原因 我覺得是方便對於任意的a[i] 取值的時候 都是等效於*(a+i)a是陣列首地址,這樣訪問第一個元素 *(a+0) 就不需要任何偏移了。

c/c++中陣列下標從0開始而非從1開始,為什麼?

14樓:匿名使用者

隨著你遇到的問題種類越來越多,你就會發現下標從0開始能給程式在細節上帶來的優化效果了。

比如,最基本的,確定陣列a中第i個元素的地址,如果從0開始,則a[i]的地址= 首地址 + i*每個資料所佔的長度;如果從1開始,則a[i]的地址= 首地址 + (i-1)*每個資料所佔的長度,多了一個整數計算

15樓:紫金玄鐵

方便訪問陣列成員。

從0開始的話,只需用陣列名(也就是陣列地址),加上下標,只需要很簡單的計算,就可以記憶體中準確訪問到元素。

像在pascal這樣的語言中,陣列下標是可由人去定的。如:

vararr: array[2..4] of integer; //陣列下標從2開始,到4結束。

雖然pascal這樣的數定,在邏輯上很方便人們去理解。但從編繹器角度來講,就很麻煩了。這時,你要訪問一個陣列元素,就不得不知道陣列的下界,還要經過轉換才能得到元素的相對指標。

如果是在多維陣列的應用中,就更顯而易見了。

c語言在工程應用中應用廣泛,就是因為他對硬體的支援效率高,

在早期硬體不是很高階的時候,將陣列下標選為0,大大提高訪問陣列速度,而且還省去了不必要的暫存器佔用。

易語言的陣列下標是從1開始還是從0開始,之前學過別的程式語言,那的陣列下標是從0開始的,但我看易語 5

資料結構的研究內容是什麼,資料結構研究的內容是什麼

1 資料的各種邏輯結構和物理結構以及它們之間的關係 數學模型 2 對各種結構定義相應的運算 3 設計出相應的演算法 4 分析演算法的效率。資料結構研究的內容是什麼 資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及他們之間的關係和操作等等的學科 計算機各種領域都用到資料結構,基本的程式...

資料結構中是什麼意思,資料結構中和的區別是什麼

引用t的地址,形參t發生變化,實際的t也會變化。如果是c編譯環境,實際 應該為inittree t 若是c 環境,t和 t均可。inittree t 表明引數t是引用引數 資料結構中 和 的區別是什麼 應該是c 裡的吧?沒有在c語言版的資料結構中看見 吧?在定義時,是一個識別符號,宣告該變數是一個指...

為什麼我感覺看資料結構C語言版的一點都看懂 放下書就忘啊

或許自己眼高手低了吧,建議樓主在看資料結構的同時,要多上機實踐!實踐才是檢驗真理的唯一標準 只有通過上機,才能真正弄懂一些知識。如果覺得上機還能過得去,沒有挑戰性的話,可以試著做一些小的程式,這樣既鍛鍊了自己,又很有成就感 加油,樓主o o 先理解各個結構的本質,然後對其各種操作才會比較容易掌握,從...