下標從0開始好怪啊?
1樓:網友
不要想當然的理解為下標是用來計數的,c語言中陣列索引,下標是甚至可以寫成負數的。
陣列下標的本質是相對於陣列首位址(或是指標)的偏移量,理解了這個自然而然就能理解為什麼是從0開始的。
2樓:微言擺渡人
程式設計師數數都是從0開始數的,慢慢就習慣了。至於整數除法,可以理解為需要將結果強制轉為整數,捨棄小數部分。
3樓:網友
c語言陣列開始值從0開始是因為指標預設從0開始,a[0]和*a指向同乙個值。
4樓:神官0麥依
這個問題和你說的長度沒關係,而是資料型別的問題,你定義的是int型,所以5/2才等於2。
而且你這個也不是求中位數的吧?你這個中位數應該是3int array = 1,2,3,4,5];/int array = 1,2,3,4,5,6];
if( %2 ==1){
double mid = array[;/就是array[2] =3else{double mid =(array[ -1] +array[;//就是(array[2]+array[3])/2=(3+4)/2=
為什麼陣列下標要從0開始
5樓:網友
乙個陣列的基位址是該陣列的第乙個元素位址,沒有要求。
說下標必須從零開始,他們可以從任何乙個數開始,只要是連續的就可以,但是起始下標是零比較方便討論,因此我們一般都讓陣列從下標零開始,除非有很好的理由不這麼做。
6樓:網友
好計算位址偏移,你要是懂c語言就比較明白了。
7樓:網友
c語言的編譯器說從陣列從第0個開始,c語言就從第0個開始了。
8樓:
matlab中陣列下標從1開始。
為什麼陣列的下標要從0開始
9樓:匿名使用者
為了更好理解,我們舉個例子:
1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體位址;
c語言的下標為什麼從0開始
10樓:甜心乳酪
其實從0開始是有一定道理的。
陣列是一段連續的空間,要求a[i]就是求它的位址,然後找到它。如果從0開始,則a[i]的位址= 首位址 + i*每個資料所佔的長度;如果從1開始,則a[i]的位址= 首位址 + i-1)*每個資料所佔的長度。
是不是前一種更好計算呢。
如果是二維陣列就更是這樣了。
11樓:網友
沒有規定一定要從「0」開始啊,如果你願意,可以從任何數字開始,也能達到一樣的效果。
不過按照人們的習慣,做加法計算的時候,初值都選用「0」(這樣,加幾減幾都不會出現偏差);做乘法運算的時候,初值都選用「1」(如果選用「0」的話,乘到最後的結果就只能是「0」不會得到預期的結果了)。
12樓:手機使用者
和計算機內部的資料結構相關。
用二進位第乙個是0
13樓:網友
學了多維陣列後還不明白這個問題嗎?c語言的這個特徵是很方便的,
14樓:網友
基本上程式語言的下標都是從0開始的,這可能跟現實中有點兒不一樣。不過慢慢習慣了就好了。
15樓:
vb裡要說option base 1 下標才從1開始啊。
我感覺樓上的說的對。
16樓:網友
硬性規定啊!
將來你要能搞出一套開發環境來,下標想從幾開始就從幾開始,你自己規定,別人服從!
17樓:網友
從幾開始不都一樣,只是個標記而已,也可以從'a'開始,從100開始,習慣了就好了。
c語言陣列的下標總是從0開始嗎?
18樓:水水好萌
是的,對陣列a[max](max是乙個編譯時可知的值)來說,它的第乙個和最後乙個元素分別是a[o]和almax-1)。在其它一些語言中,情況可能有所不同,例如在basic語言中陣列a[max]的元素是從a[1]到a[max],在pascal語言中則兩種方式都可行。
上述這種差別有時會引起混亂,因為當你說「陣列中的第乙個元素」時,實際上是指「陣列中下標為。的元素」,這裡的「第乙個」的意思和「最後乙個」相反。
因為指標和陣列幾乎是相同的,因此你可以定義乙個指標,使它可以象乙個陣列一樣引用另乙個陣列中的所有元素,但引用時前者的下標是從1開始的:
don't do this!!*/
int a0[max],int *a1=a0-1; /*&a0[-1)*/
現在,a0[0]和a1[1)是相同的,而a0[max-1]和a1[max]是相同的。然而,在實際程式設計中不應該這樣做,其原因有以下兩點:
第二,這種方式背離了c語言的常規風格。人們已經習慣了c語言中陣列下標的工作方式,如果你的程式使用了另外一種方式,別人就很難讀懂你的程式,而經過一段時間以後,連你自己都可能很難讀懂這個程式了。
j**a為什麼陣列下標從0開始
19樓:網友
陣列下標實際上是偏移量。
a[0]和*a所指的都是第乙個元素。
a[1]=*(a+1)。
所以就有了從零開始的說法。
在c程式的陣列中為什麼下標要從0開始呢?從1開始不行嗎?
20樓:網友
可以,但是浪費了記憶體。
比如開闢100個儲存,int array[100]:是從0~99,而你是從一開始,必須是int array[101]了,之所以下標從0是因為pc的記憶體他的硬體實實在在就是從0位址開始索引的……
21樓:
陣列的位址與第乙個元素的位址相同,下標為多少也就是指偏移量為多少的位址,所有0開始比較方便。
還有一些歷史原因吧,有些時候設計者就是按照他的思想設計的,就是他認為的,也沒那麼多原因。
22樓:網友
c語言是老外發明的,老外都是從0開始,跟中國人習慣不同。
23樓:網友
程式最終都會編譯成機器碼,如果你瞭解彙編的話應該知道,陣列佔用著一串連在一起的記憶體,陣列名可以理解為那一塊記憶體的首位址,下標則是偏移,定址過程就是首位址+偏移*步長,第乙個元素偏移為零,剛好等於下標,如果下標從1開始處理起來麻煩一點。
24樓:網友
在c程式的陣列中為什麼下標要從0開始呢?從1開始不行嗎?
可以。但是從0開始更節約記憶體。
程式設計常識13:陣列索引陣列下標為什麼要從0開始
25樓:追憶小土豆
為了更好理解,我們舉個例子:
1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體位址;
陣列的下標應該是從0還是從1開始
26樓:折柳成萌
為了更好理解,我們舉個例子:
1、陣列在記憶體中申請是,所申請的記憶體是一段連續的記憶體位址;
2、例:int a=new int[3];申請一段:int 資料型別的陣列,a 為變數,陣列長度為:[3];
1009,第三個為:1010);,但我們只知道:一、變數:
a,它只拿到第乙個記憶體位址1008;二、它的陣列空間為3個;
所以:資料下標從 [0] 開始的意義也在於此!(當然,這是理解版的)。
備註):如果你寫a[3],它就報錯了,越界錯誤,因為你只申請了3個記憶體空間。
從0開始數到9的數字0123456789這數字當中每個數字都代表著話題那都代表了什麼話題
這個屬於阿拉伯數字沒有任何意義的代表,都是中國人自己的聯想你看看外國人哪有中國人這麼多事情 數字代表什麼話題,各有各人的理解。這個要看你自己啦,你覺得是什麼話題可以說就好人去想想就知道了。從0123456789這10個數中任選三個數,求這三個數中不含0或5的概率 計算公bai式 1 8 du8 8 ...
搞電力工作,從0開始學習,先學什麼
要做電力工作,懂電是必須的,而且要持證上崗。建議您參加專業的電力學習培訓或者到電力學校上學進修。從零開始學電氣知識,需要看那些書?1 首先要了解什麼是電氣,可以看看 電工基礎 裡面有很多的理論知識 2 其次先要看強電電工知識,因為所有的控制裡面,最後執行的單元一定是強電,這個可以看一下 工廠供電 3...
如何從零開始學習電腦,從0開始學計算機,怎麼學啊
你現在也在用電腦,說明你不是零 要知道基本工作原理,自己動手拆開來,看看裡面的結構,然後對照目前各大論壇上的原理講解圖就明白了 要想學得快,最好還是找懂電腦的人 找個培訓的地方學會比較快 自學也行,不過比較慢一點。先從一些基本的知識開始學習啊,像 計算機應用基礎 找一本電腦基礎的書,邊看書邊操作比較...