C語言的陣列下標為什麼要設計成從零開始

2021-04-15 12:27:05 字數 2361 閱讀 3992

1樓:倒黴孩子改名啦

計算機的記憶體編號是從零開始編號的,是一種規定,程式的執行要靠計算機系統分配記憶體,所以,這也是一種規定。

為什麼c語言中陣列要從0開始

2樓:浮誇

滿意答案李誠(本心)5級2009-07-25首先,陣列從零開始這個很多語言都是的,不過基本上可以看作從c語言開始就這樣,後來的語言就是形成習慣了啊 追問: c語言為為什麼是從0開始,我記得0一開始的時候好像不是視為自然數的,小學的時候。 回答:

個人認為和陣列的使用方法有關,在c語言的使用中,推薦的使用方式並不是a[0]這種方式,而是直接使用陣列指標,那麼第一個陣列單元就是a,第二個就是a+1,正好和所謂的下標也吻合了,以後就知道a+x就是a[x],如果是從一開始的話那麼這兩個就又錯開一位。這個答案是看了c programming language後總結的,不知道對不對,建議你也看看這本書。風之子 的感言:

這個答案挺新鮮,我有這本書,不過沒有怎麼看。可能是你說的原因吧,謝謝。

c語言的下標為什麼從0開始

3樓:甜心乳酪

其實從0開始是有一定道理的。

陣列是一段連續的空間,要求a[i]就是求它的地址,然後找到它。如果從0開始,則a[i]的地址= 首地址 + i*每個資料所佔的長度;如果從1開始,則a[i]的地址= 首地址 + (i-1)*每個資料所佔的長度。

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

如果是二維陣列就更是這樣了。

4樓:匿名使用者

沒有規定一定要從「0」開始啊,如果你願意,可以從任何數字開始,也能達到一樣的效果。

不過按照人們的習慣,做加法計算的時候,初值都選用「0」(這樣,加幾減幾都不會出現偏差);做乘法運算的時候,初值都選用「1」(如果選用「0」的話,乘到最後的結果就只能是「0」不會得到預期的結果了)。

5樓:手機使用者

和計算機內部的資料結構相關

用二進位制第一個是0

6樓:匿名使用者

學了多維陣列後還不明白這個問題嗎?c語言的這個特徵是很方便的,

7樓:匿名使用者

基本上程式語言的下標都是從0開始的,這可能跟現實中有點兒不一樣..不過慢慢習慣了就好了...^_^

8樓:

vb裡要說option base 1 下標才從1開始啊

我感覺樓上的說的對

9樓:匿名使用者

硬性規定啊!

將來你要能搞出一套開發環境來,下標想從幾開始就從幾開始,你自己規定,別人服從!

10樓:匿名使用者

從幾開始不都一樣,只是個標記而已,也可以從'a'開始,從100開始,習慣了就好了。

11樓:

mlt2004說得好

c語言中,陣列元素的下標是從什麼開始的

12樓:匿名使用者

從0開始

比如a[100] 就是0-99的下標

13樓:大狂哥灬

比如說a【4】是從下標0開始到3結束

a【n】就是從0開始到n-1結束

c++語言程式設計 什麼是陣列?陣列下標是從多少開始的那句話

14樓:志當存高遠

在c語言中,對於陣列你只需要理解三件事。

1.c語言中有且只有一維陣列。

所謂的n維陣列只是一個稱呼,一種方便的記法,都是使用一維陣列來**的。

c語言中陣列的元素可以是任何型別的東西,特別的是陣列作為元素也可以。所以int a[3][4][5]就應該這樣理解:a是一個擁有3個元素的數護川篙沸蕻度戈砂恭棘組,其中每個元素是一個擁有4個元素的陣列,進一步其中每個元素是擁有5個整數元素的陣列。

2.陣列的元素個數,必須作為整數常量在編譯階段就求出來。

int i;int a;//不合法,編譯不會通過。

你可以試試這個:int a;

編譯器無法推斷,所以會判錯說「array size missing in a」之類的資訊。不過在最新的c99標準中實現了變長陣列

3.對於陣列,可以獲得陣列第一個(即下標為0)元素的地址(也就是指標),從陣列名獲得。

5.為什麼陣列是從0開始的

15樓:匿名使用者

這就是一個規定,大多數的程式語言的陣列下邊都是從零開始的,但也有例外,比如matlab的陣列下標就是從1開始的

16樓:匿名使用者

因為記憶體分配是從0地址開始

C語言中陣列元素的下標可不可以是陣列元素,另外

c語言程式執行時,陣列的存在形式是記憶體中的一塊連續地址空間。而訪問陣列元素時,計算機會將下標做為空間首地址的偏移量來進行定址,所以當然可以是任何整形數。比如int array 10 array的地址是0x7fffff00,那麼在訪問array 3 時,計算機是這樣計算的 每個整形數大小為4個位元組...

c語言的問題,為什麼會跑成無限迴圈

include void main void else row 我給你寫的,你看看 include int main for int j 0 j 8 j else return 0 void main void else row while counter 8 這個裡面沒有對counter 進行操作...

C語言為什麼輸出的是7 0啊,C語言 7 0,為什麼

字元 hex dec 0 0x00 0 從數值上說上面三個是相等的 0 0x30 48 請lz注意他們的區別 你可以這樣理解strlen 函式的實現 int strlen char str 定義的x是字元型陣列名,但在c語言中字元型變數可以被賦予整形資料,字串裡遇到結束符0 0 就會結束,不管後面是...