下標從0開始好怪啊? 20

2025-02-16 18:15:10 字數 3898 閱讀 8698

下標從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開始學計算機,怎麼學啊

你現在也在用電腦,說明你不是零 要知道基本工作原理,自己動手拆開來,看看裡面的結構,然後對照目前各大論壇上的原理講解圖就明白了 要想學得快,最好還是找懂電腦的人 找個培訓的地方學會比較快 自學也行,不過比較慢一點。先從一些基本的知識開始學習啊,像 計算機應用基礎 找一本電腦基礎的書,邊看書邊操作比較...