1樓:網友
陣列一般都是從零開始,但可以設定上下界。
陣列可以用相同名字引用一系列變數,並用數字來識別它們。在許多場合,可用陣列可以縮短和簡化程式,因為可以利用索引值設計乙個迴圈,高效處理各種情況。陣列有上界和下界,陣列的元素在上下界內是連續的,因為visual basic對每乙個索引值都分配空間,所以不要不切實際地宣告乙個太大的陣列。
乙個陣列中的所有元素應該具有相同的資料型別。當然,當資料型別為變體型時,各個元素能夠包含不同種類的資料(物件、字串、數值等等),可以宣告任何基本資料型別的陣列,包括使用者定義的型別和物件變數。
在visual basic中有兩種型別的陣列,固定大小的陣列和在執行中大小可以改變的動態陣列。 §有三種方法宣告固定大小的陣列。
在模組的宣告段,用public語句宣告公用陣列。
在模組的宣告段,用private語句宣告陣列。
在過程中,用private語句宣告區域性陣列。
希望我能幫助你解疑釋惑。
2樓:湖南東方高階技工學校
最經典的語言是c語言,而c語言中將陣列名稱視為陣列首指標,比如a[10]陣列,a就是a[0]的位址(第乙個元素的位址)然後運算子。
作用於a[i]實際上等同於*(a+i) (a向後跳i個元素的那個元素)由於a本身就存著首位址,a[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開始。
為什麼c語言的陣列下標從0開始而不是從1開始
10樓:網友
一種約定。
如果最初約定從1開始 那也沒什麼。
至於為什麼會選擇從0開始,最重要的原因 我覺得是方便對於任意的a[i] 取值的時候 都是等效於*(a+i)a是陣列首位址,這樣訪問第乙個元素 *(a+0) 就不需要任何偏移了。
為什麼在資料結構教科書上的陣列是由1開始而不是由0開始?
11樓:網友
你看到是不是連結串列?
有些連結串列為了表示方便,第0位沒有「資料段」。
就好比陣列a[0],沒有值一樣,但是它仍然是實實在在存在的。
12樓:網友
書上這樣寫應該是為了更容易看懂吧,實際上都是從0開始的。只要明白語法,讀寫對應就可以了,不必要管從幾開始。有很多應用都不是從頭開始的。
13樓:網友
不同的語言有不同的規則。
陣列下標都是從1開始的,為什麼說成是從0開始的呢?
14樓:仁昌居士
陣列下標說成是從0開始的是因為如果從1開始編號,每次隨機訪問陣列元素都多了一次減法運算,對於cpu來說,就是多了一次減法指令。陣列作為非常基礎的資料結構,通過下標訪問陣列元素又是其非常基礎的程式設計操作,效率的優化就要儘可能的做到極致。從0開始,可以減少一次減法操作。
15樓:網友
下標是指陣列元素的索引號,vb預設是0,對於你的陣列dim a as variant
a=array(1,2,3,4)
a(0) 指第乙個元素,它的索引號是0,它的值是1
16樓:網友
option base 指定下標。一般是0或者是1.
c/c++中陣列下標從0開始而非從1開始,為什麼?
17樓:網友
隨著你遇到的問題種類越來越多,你就會發現下標從0開始能給程式在細節上帶來的優化效果了。
比如,最基本的,確定陣列a中第i個元素的位址,如果從0開始,則a[i]的位址= 首位址 + i*每個資料所佔的長度;如果從1開始,則a[i]的位址= 首位址 + i-1)*每個資料所佔的長度,多了乙個整數計算。
18樓:紫金玄鐵
方便訪問陣列成員。
從0開始的話,只需用陣列名(也就是陣列位址),加上下標,只需要很簡單的計算,就可以記憶體中準確訪問到元素。
像在pascal這樣的語言中,陣列下標是可由人去定的。如:
vararr: array[2..4] of integer; //陣列下標從2開始,到4結束。
雖然pascal這樣的數定,在邏輯上很方便人們去理解。但從編繹器角度來講,就很麻煩了。這時,你要訪問乙個陣列元素,就不得不知道陣列的下界,還要經過轉換才能得到元素的相對指標。
如果是在多維陣列的應用中,就更顯而易見了。
c語言在工程應用中應用廣泛,就是因為他對硬體的支援效率高,在早期硬體不是很高階的時候,將陣列下標選為0,大大提高訪問陣列速度,而且還省去了不必要的暫存器佔用。
無論是彙編中的儲存器還是高階語言中比如陣列角標為什麼都從0開始而不是1,是歷史遺留問題還是有什麼微
19樓:雁西樓
基於0還是基於1的問題涉及到很多方面的因素。
並不是所有的語言都是基於0的。
在大多數開發環境中,collection物件的元素就是基於1的。
一些非強制型別的程式語言的陣列也是基於1的。
基於0的好處在於,對基址偏移的計算相對簡單得多,比如對n個連續存放的的4位元組資料,只要知道第乙個資料的開始位置是x,那麼,要取出第m個,就從x+m*4那裡讀出4個位元組就可以了(第乙個就是x+0*4=x).
試想一下它是基於1的,你需要這樣計算:x+(m-1)*4,多出乙個減法計算。
基於1的好處是附合自然語言的習慣,人們讀起來更容易。比如前面說到的集合,我們通過索引遍歷乙個集合時一般寫成:
for index = 1 to
如果集合是基於0的,那麼,就要寫成。
for index = 0 to - 1
這明顯沒有前者易讀。
一般來說,對於元素長度固定的結構,會採用基於0的設計,這有利於降低遍歷時定位的計算量,如陣列,提高執行速度,對於元素長度不固定的,則會使用基於1的設計,如集合。
我為什麼選擇計算機專業,為什麼選擇計算機專業
當時填志願完全是因為家裡剛好有臺破電腦。別的專業不習喜歡,計算機還不錯就報了,不曾想到的是大學裡面計算機要學習的很多,大多數都是理論,比較枯燥。為什麼選擇計算機專業 計算機技術是人類在20世紀最重要的發明之一。目前 計算機技術仍處於技術發展的。上升期和活躍期。最近一些影響廣泛的新技術和新產品 如智慧...
計算機為什麼管不了機,計算機為什麼管不了機。
有一些病毒木馬流氓軟體,在入侵電腦時建立了惡意驅動程式 sys檔案 病毒作者在設計病毒程式時,系統相容性的問題不是他考慮的重點,經常會出現相容問題。使用金山毒霸快速查殺,以排除病毒問題導致關機失敗。一般只需要快速查殺,3 5分鐘後即可按提示解決。2.如果仍出現關機失敗,使用工作管理員檢查一下正在執行...
為什麼要學習計算機和學習計算機的重要性
兩樣都重要.玩電腦和學習本不衝突,而且可以互補,重要的是你是怎麼利用電腦,怎麼樣學習.可以學習電腦技術,理由有三 1 工作起點高,發展空間大 電腦工程版師現在缺口非常的大,一項權來自中華英才網的統計資料顯示 電腦工程師需求量每年的缺口超過60萬人,而且這個資料隨著中國電腦的普及而快速遞增。2 職業壽...