1樓:匿名使用者
可以,但是浪費了記憶體
,比如開闢100個儲存,int array[100]:是從0~99,而你是從一開始,必須是int array[101]了,之所以下標從0是因為pc的記憶體他的硬體實實在在就是從0位址開始索引的……
2樓:
陣列的位址與第乙個元素的位址相同,下標為多少也就是指偏移量為多少的位址,所有0開始比較方便。
還有一些歷史原因吧,有些時候設計者就是按照他的思想設計的,就是他認為的,也沒那麼多原因。
3樓:匿名使用者
c語言是老外發明的,老外都是從0開始,跟中國人習慣不同
4樓:匿名使用者
程式最終都會編譯成機器碼,如果你了解彙編的話應該知道,陣列佔用著一串連在一起的記憶體,陣列名可以理解為那一塊記憶體的首位址,下標則是偏移,定址過程就是首位址+偏移*步長,第乙個元素偏移為零,剛好等於下標,如果下標從1開始處理起來麻煩一點。
5樓:匿名使用者
在c程式的陣列中為什麼下標要從0開始呢?從1開始不行嗎?
可以。但是從0開始更節約記憶體。
為什麼c語言的陣列下標從0開始而不是從1開始
6樓:匿名使用者
一種約定。
如果最初約定從1開始 那也沒什麼
至於為什麼會選擇從0開始,最重要的原因 我覺得是方便對於任意的a[i] 取值的時候 都是等效於*(a+i)a是陣列首位址,這樣訪問第乙個元素 *(a+0) 就不需要任何偏移了。
c語言的下標為什麼從0開始
7樓:甜心乳酪
其實從0開始是有一定道理的。
陣列是一段連續的空間,要求a[i]就是求它的位址,然後找到它。如果從0開始,則a[i]的位址= 首位址 + i*每個資料所佔的長度;如果從1開始,則a[i]的位址= 首位址 + (i-1)*每個資料所佔的長度。
是不是前一種更好計算呢。
如果是二維陣列就更是這樣了。
8樓:匿名使用者
沒有規定一定要從「0」開始啊,如果你願意,可以從任何數字開始,也能達到一樣的效果。
不過按照人們的習慣,做加法計算的時候,初值都選用「0」(這樣,加幾減幾都不會出現偏差);做乘法運算的時候,初值都選用「1」(如果選用「0」的話,乘到最後的結果就只能是「0」不會得到預期的結果了)。
9樓:手機使用者
和計算機內部的資料結構相關
用二進位制第乙個是0
10樓:匿名使用者
學了多維陣列後還不明白這個問題嗎?c語言的這個特徵是很方便的,
11樓:匿名使用者
基本上程式語言的下標都是從0開始的,這可能跟現實中有點兒不一樣..不過慢慢習慣了就好了...^_^
12樓:
vb裡要說option base 1 下標才從1開始啊
我感覺樓上的說的對
13樓:匿名使用者
硬性規定啊!
將來你要能搞出一套開發環境來,下標想從幾開始就從幾開始,你自己規定,別人服從!
14樓:匿名使用者
從幾開始不都一樣,只是個標記而已,也可以從'a'開始,從100開始,習慣了就好了。
15樓:
mlt2004說得好
為什麼陣列下標從0開始而不是從1開始?
16樓:匿名使用者
陣列是一段連續的空間,要求a[i]就是求它
的位址,然後找到它。如果從0開始,則a[i]的位址= 首位址 + i*每個資料所佔的長度;如果從1開始,則a[i]的位址= 首位址 + (i-1)*每個資料所佔的長度。
是不是前一種更好計算呢。
c語言陣列的下標總是從0開始嗎?
17樓:匿名使用者
在其它一些語言中,情況可能有所不同,例如在basic語言中陣列a[max]的元素是從a[1]到a[max],在pascal語言中則兩種方式都可行。
注意:a[max]是乙個有效的位址,但該位址中的值並不是陣列a的乙個元素。
上述這種差別有時會引起混亂,因為當你說「陣列中的第乙個元素」時,實際上是指「陣列中下標為。的元素」,這裡的「第乙個」的意思和「最後乙個」相反。
因為指標和陣列幾乎是相同的,因此你可以定義乙個指標,使它可以象乙個陣列一樣引用另乙個陣列中的所有元素,但引用時前者的下標是從1開始的:
/*don't do this!!*/
int a0[max],
int *a1=a0-1; /*&a0[-1)*/
現在,a0[0]和a1[1)是相同的,而a0[max-1]和a1[max]是相同的。然而,在實際程式設計中不應該這樣做,其原因有以下兩點:
第二,這種方式背離了c語言的常規風格。
常用的程式語言,陣列下標從0和1開始的分別有哪些
今天長見識了,為什麼陣列的下標從0開始,–
18樓:匿名使用者
陣列是記憶體中申請的一塊連續的區域,如果這個區域的首位址為x,則第乙個元素也指向這個位址x,第乙個元素相對陣列的首位址的偏移(相對位置)為0。這是陣列的下標從0開始的原因,組合語言、c語言這些相對接近機器的演算法語言就是這樣規定的。
為什麼c語言中陣列要從0開始
19樓:浮誇
滿意答案李誠(本心)5級2009-07-25首先,陣列從零開始這個很多語言都是的,不過基本上可以看作從c語言開始就這樣,後來的語言就是形成習慣了啊 追問: c語言為為什麼是從0開始,我記得0一開始的時候好像不是視為自然數的,小學的時候。 回答:
個人認為和陣列的使用方法有關,在c語言的使用中,推薦的使用方式並不是a[0]這種方式,而是直接使用陣列指標,那麼第乙個陣列單元就是a,第二個就是a+1,正好和所謂的下標也吻合了,以後就知道a+x就是a[x],如果是從一開始的話那麼這兩個就又錯開一位。這個答案是看了c programming language後總結的,不知道對不對,建議你也看看這本書。風之子 的感言:
這個答案挺新鮮,我有這本書,不過沒有怎麼看。可能是你說的原因吧,謝謝。
陣列的小標為什麼要從0開始,為什麼陣列下標從0開始而不是從1開始
這是c和c 規定,vb預設也是從0開始。這是因為在使用陣列元素,如a i 時,是需要計算該元素在記憶體中的位址,為陣列的起始位址a,加上i個元素的偏移量,即a i 的位址為a i 元素型別的大小。當i 0 即下標為0 時,陣列的最開始的元素所在位址,就是陣列的起始位址。即a 0 的位址,就是a這個陣...
為什麼C語言的陣列下標從0開始而不是從1開始
一種約定。如果最初約定從1開始 那也沒什麼 至於為什麼會選擇從0開始,最重要的原因 我覺得是方便對於任意的a i 取值的時候 都是等效於 a i a是陣列首位址,這樣訪問第乙個元素 a 0 就不需要任何偏移了。陣列下標都是從1開始的,為什麼說成是從0開始的呢?陣列下標說成是從0開始的是因為如果從1開...
c語言題目陣列在定義時和引用時所帶的下標有何區別
定義時 下標 表示 這個陣列的 總的元素個數。就是總大小。引用時候 下標是個 標記。用scanf s 不能輸入空格的。gets 可以 定義時指的是元素的個數n,而引用的時候是單個元素,0 n 1 使用getline type a 19 type a a 10 於是,a成為乙個下標為 9 9的type...