c語言陣列的下標總是從0開始嗎,C語言陣列的下標總是從0開始嗎

2021-03-04 03:05:38 字數 5435 閱讀 3554

1樓:水水好萌

是的,對陣列a[max](max是乙個編譯時可知的值)來說,它的第乙個和最後乙個元素分別是a[o]和almax-1)。在其它一些語言中,情況可能有所不同,例如在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語言的常規風格。人們已經習慣了c語言中陣列下標的工作方式,如果你的程式使用了另外一種方式,別人就很難讀懂你的程式,而經過一段時間以後,連你自己都可能很難讀懂這個程式了。

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

2樓:匿名使用者

因為那個是「偏移跨度」,不是「第幾個」,第乙個元素位址就是陣列首位址,要是從1開始,那麼第乙個元素不就去了第二個元素位址了麼

3樓:物理公司的

習慣,因為二進位制是0101,所以一般從0開始計算

4樓:幻想秘境

請參考

c語言中陣列下標有下限嗎

5樓:天雲一號

c語言中陣列的下標是根據使用者定義的陣列大小來確定的,最小下標為0.

舉例說明如下:

int a[5]=; // 定義乙個int型陣列,並對其進行初始化。則共有a[0]、a[1]、a[2]、a[3]、a[4]這5個元素,所以其下標的範圍為0~5

更一般的就是

陣列a[n]的下標範圍為0~n-1

6樓:百度使用者

看書遇到了陣列下標的問題,在書上沒找到答案,書上問,如果有是多少?望各位大哥大姐幫幫忙啊

陣列下標都是從1開始的,為什麼說成是從0開始的呢?

7樓:仁昌居士

陣列下標說成是從0開始的是因為如果從1開始編號,每次隨機訪問陣列元素都多了一次減法運算,對於cpu來說,就是多了一次減法指令。陣列作為非常基礎的資料結構,通過下標訪問陣列元素又是其非常基礎的程式設計操作,效率的優化就要盡可能的做到極致。從0開始,可以減少一次減法操作。

8樓:匿名使用者

下標是指數組元素的索引號,vb預設是0,對於你的陣列dim a as variant

a=array(1,2,3,4)

a(0) 指第乙個元素,它的索引號是0,它的值是1

9樓:匿名使用者

option base 指定下標。一般是0或者是1.

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

10樓:倒霉孩子改名啦

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

4 在計算機二級c語言中 陣列下標的下限為什麼是0 ?

11樓:天雲一號

因為c語言規定陣列的下標都是從0開始的,所以其下限就是為0。

對於陣列a[n],對應的下標範圍為0~n-1,如:

int a[5]; // 陣列a共有5個元素,分別為a[0]、a[1]、a[2]、a[3]、a[4]

12樓:匿名使用者

沒有為什麼,就是這麼定義的,計算機陣列從0開始,只要記住就好~

13樓:匿名使用者

0是代表陣列的第乙個元素, 每種語言都有自己的語法規則, 不是你想怎樣就能怎樣

14樓:劉三石

因為下標表示的是這個資料偏離第乙個資料的位置,第乙個資料偏離它本身零個位置,所以是零。

15樓:匿名使用者

這是規則,就像你知道1+1=2一樣

c語言中的下標是什麼意思?

16樓:非常可愛

c語言中的

下標是定義陣列a和陣列b[n],下標是用在陣列中的;

a[1]和b[1]就是下標相同的乙個元素,陣列a[1]中的數滿足條件的之後就做移位計算,是減小左移,右移增加;

例:inta[5]=;

printf(「%d,%d,%d,%d,%d」,a[0],a[1],a[2],a[3],a[4]);//會輸出1,2,3,4,5

a[0]=10;

printf(「%d」,a[0]);//輸出10;

擴充套件資料基本的算數運算子

(1)、+加法運算或正值運算子

4+4、+5

(2)、-減法運算或負值運算子

6-4、-10、-29

(3)、乘法運算

注意符號,不是x,而是;

(4)、/除法運算

注意符號,不是÷,也不是\,而是/;

整數除於整數,還是整數。1/2的值是0,這個並不是二分之一,不會四捨五入,直接截斷取值;

(5)、%取餘運算

取餘:即兩個整數相除之後的餘數;

注意:%兩側只能是整數,正負性取決於%左側的數值;

17樓:龍之喵喵豬

在c語言中,下標定義為陣列arr和陣列brr[n]。下標用於陣列中。

arr[1]和brr[1]是下標相同的元素。當陣列arr[1]中的數字滿足條件時,將執行移位計算。c語言是向左移動減少,向右移動增加。

例如:int arr[4]=

printf(「%d、%d、%d、%d」、arr[0]、arr[1]、arr[2]、arr[3]);//輸出5、6、7、8

arr[0]=25

printf(「%d」,a[0]);//輸出25擴充套件資料:基本算術運算子

1、+加法或正值運算子:8+8、+9。

2、-減法或負值運算子:7-2、-20、-35。

3、乘法運算:注意標誌,不是x,而是*。

4、除法運算:注意符號不是÷或\,而是/,整數除以整數依然為整數。1/2的值是0,不是二分之一,不會四捨五入,直接去掉小數部分。

5、%取餘操作:取除以兩個整數後的餘數。

注:%的兩邊只能是整數,正負取決於左邊的值。

18樓:匿名使用者

第一:下標是用在陣列中的;

第二:定義陣列的是時候下標是代表陣列的長度,比如 int a[5];就是定義乙個長度為5的存放整型的陣列,陣列是啥?陣列就是集合嘛!

陣列a有5個元素,即a[0],a[1],a[2],a[3],a[4], 一共5個元素奧,此時下標就是第幾個元素的意思。

舉個例子吧:

int a[5] = ;

printf("%d,%d,%d,%d,%d", a[0],a[1],a[2],a[3],a[4]); //會輸出1,2,3,4,5

a[0] = 10;

printf("%d", a[0]); //輸出10現在明白了吧

c語言新手提問 如何定義陣列下標為負數的陣列

19樓:匿名使用者

type a[19];

type *a=&a[10];

於是,a成為乙個下標為-9~9的type型陣列這東西純粹娛樂用,你剛開始學還是離這些東西遠一點

20樓:匿名使用者

下表為負的數bai組在du c 語言裡並不是不能做到。zhi首先,建立一dao個正常的陣列 int a[20];。然後用回指標指向其中間的元素

答 int *a2 = &(a[10]);

這樣,a[-10 ... 9] 就是乙個可用的有效範圍了。

/* 樣例示範 */

#include

int main(int argc, const char *argv)

21樓:匿名使用者

我想那是乙個錯誤,這是明顯的陣列越界 學這麼長時間c語言,我從來就沒陣列的下標是從0開始的` 不可能有 -2; 有什麼不懂 你可以給我簡訊`

22樓:末暉

我記得下陣列的下標沒有負數,最低是a[0],這個系統規定了的

23樓:匿名使用者

c語言不同於pascal和basic,c的陣列下標只能從0開始,

自已再做加減

24樓:盍然泥夜蓉

第一:下bai標是用在陣列du中的;

第二:定義陣列的

是時zhi候下標是代dao表陣列的長度專,比如inta[5];就是定義乙個長度為屬5的存放整型的陣列,陣列就是集合,陣列a有5個元素,即a[0],a[1],a[2],a[3],a[4],

一共5個元素,此時下標就是第幾個元素的意思。

例子如下:

inta[5]=;

printf("%d,%d,%d,%d,%d",a[0],a[1],a[2],a[3],a[4]);

//會輸出1,2,3,4,5

a[0]

=10;

printf("%d",

a[0]);

//輸出10

c語言陣列的下標總是從0開始嗎?

25樓:匿名使用者

在其它一些語言中,情況可能有所不同,例如在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語言的常規風格。

為什麼C語言的陣列下標從0開始而不是從1開始

一種約定。如果最初約定從1開始 那也沒什麼 至於為什麼會選擇從0開始,最重要的原因 我覺得是方便對於任意的a i 取值的時候 都是等效於 a i a是陣列首位址,這樣訪問第乙個元素 a 0 就不需要任何偏移了。陣列下標都是從1開始的,為什麼說成是從0開始的呢?陣列下標說成是從0開始的是因為如果從1開...

在C程式的陣列中為什麼下標要從0開始呢?從1開始不行嗎

可以,但是浪費了記憶體 比如開闢100個儲存,int array 100 是從0 99,而你是從一開始,必須是int array 101 了,之所以下標從0是因為pc的記憶體他的硬體實實在在就是從0位址開始索引的 陣列的位址與第乙個元素的位址相同,下標為多少也就是指偏移量為多少的位址,所有0開始比較...

陣列下標為什麼從0開始而不是從1開始

你可以把陣列變數看成指標,陣列下標看成位址的偏移量。因為陣列第乙個元素的位址偏移量一定是0,所以陣列下標就是從0開始了 老大,這個問題也要問。非要懂得資料結構的人才能回答嗎?想想就很明白了。以下假設陣列下標是從1開始的 如果你定義 int a 100 那麼你在使用的時候用到第100個元素a 100 ...