1. 程式人生 > >為什麼C陣列下標從0開始,而不是從1開始

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

  對於學習過程式語言的人來說,相信絕大多數人都會有這樣的疑問:我們平時計數,通常是從一開始計數的,為什麼在程式語言中,陣列的下標是從0開始計算的呢?
  這是因為,C語言中,下標的含意是:當前元素到第一個元素的偏移量。第一個元素的下標自然就是0,第二個元素的下標為1,第n個元素的下標為n-1。
  這樣處理能帶來什麼好處呢?
  我們知道,C語言的陣列是儲存在一片連續的記憶體空間中的。C編譯器就可以直接通過第一個元素的地址,即陣列地址,和相應元素的下標[即距首元素的偏移量]來得到它的地址。如:

char arr[] = "hello world!";

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