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

2021-08-21 21:38:34 字數 419 閱讀 6498

對於學習過程式語言的人來說,相信絕大多數人都會有這樣的疑問:我們平時計數,通常是從一開始計數的,為什麼在程式語言中,陣列的下標是從0開始計算的呢?

這是因為,c語言中,下標的含意是:當前元素到第乙個元素的偏移量。第乙個元素的下標自然就是0,第二個元素的下標為1,第n個元素的下標為n-1。

這樣處理能帶來什麼好處呢?

我們知道,c語言的陣列是儲存在一片連續的記憶體空間中的。c編譯器就可以直接通過第乙個元素的位址,即陣列位址,和相應元素的下標[即距首元素的偏移量]來得到它的位址。如:

char arr = "hello world!";
假設arr[0]的位址為10000,編譯器可以通過10000 + 2來獲取a[2]的位址。從編譯器的角度來講,陣列下標[索引]從0開始更為高效。

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

關於陣列的下標為什麼從0開始,我想這是許多初學陣列的同學所疑惑的,在此我發表一些我的看法。首先假設我要定義乙個int a 相信大家對這個還是比較容易理解的,這個時候系統自動為a分配2個位元組的儲存空間 有的編譯器是4個 一般是兩個 a無可厚非,指的就是那兩個位元組的空間,如果要給a賦值的話,直接a ...

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

為了更方便計算記憶體位址 陣列 array 是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料 線性表 按線性結構儲存 依次儲存 陣列,鍊錶,佇列,棧都是經典的線性表 連續記憶體空間和相同資料型別 真是因為有這兩個限制才會有隨機訪問這個性質的。我們來看看int型別長度為10...

為什麼TCP的序號是隨機的,而不是從0開始?

主要有兩個問題 假設客戶端a發給服務端b的乙個包在網路裡面停留太久 最後本次連線已經結束了,後面又重新建立了一次連線 恰巧這次連線的四元組和上次相同,其實就是源埠剛好相同 四元組 源ip位址 源埠號 目標ip位址 目標埠號 這時序號又是從0開始,而卡了很久的包在這時送到了服務端 因為連線時的序號都是...