c語言陣列的下標,C語言陣列的下標

2021-03-21 18:34:11 字數 5191 閱讀 8475

1樓:匿名使用者

樓主你好。

注意a是常量,不要被別人誤導了。

實際上a是陣列名代表陣列的首地址(注意雖然陣列名和指標都代表地址,但是陣列名不是指標,指標是變數,這個a是常量,可以叫指標常量)

而i實際上可以看做陣列中的元素距離陣列首地址的偏移量(距離)。*(a+i)就是取距離陣列首元素距離為i的陣列中元素的值,也就是a[i]了。也就是說*(a+i)==a[i].

希望能幫到你。

2樓:樂跑小子

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

第二:定義陣列的是時候下標是代表陣列的長度,比如 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

3樓:非常可愛

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)、%取餘運算

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

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

c語言中,定義陣列和引用陣列時,其陣列的下標的資料型別分別允許是什麼?

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

4樓:水水好萌

是的,對陣列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語言中陣列元素的下標可不可以是陣列元素,另外··

5樓:無聲的硝煙

c語言程式執行時,陣列的存在形式是記憶體中的一塊連續地址空間。而訪問陣列元素時,計算機會將下標做為空間首地址的偏移量來進行定址,所以當然可以是任何整形數。

比如int array[10],array的地址是0x7fffff00,那麼在訪問array[3]時,計算機是這樣計算的:

每個整形數大小為4個位元組,所以用array的地址加上3乘以4,得到0x7fffff0c,那麼從0x7fffff0c到0x7fffff0f這4個位元組的值就是array[3]的值。

所以無論傳入的下標是什麼,理論上都可以計算得到一個地址,但是這個地址不一定是有效的。如果地址無效,就會發生段錯誤(segmentation fault),也即陣列越界/地址訪問越界。現在的編譯器會認為只要下標是個整型變數,就是可以的,但是執行的時候作業系統仍然會進行監測,否則會影響其他程式的執行。

比如說a = , b = ,那麼b[a[3]] = b[5]=6,這個是可以允許的。

6樓:匿名使用者

當然可以,只要能夠被解釋成整數的都可以

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

7樓:非常可愛

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)、%取餘運算

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

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

8樓:龍之喵喵豬

在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、%取餘操作:取除以兩個整數後的餘數。

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

9樓:匿名使用者

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

第二:定義陣列的是時候下標是代表陣列的長度,比如 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語言中陣列下標有下限嗎

10樓:天雲一號

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

舉例說明如下:

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

更一般的就是

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

11樓:百度使用者

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

c語言中陣列的下標可以是字元嗎?代表什麼意思?

12樓:匿名使用者

c語言陣列的下標只能是合法的整型值。

當下標為字元時,有兩種可能:

1 以字元常量作為下標。如內a['a'];表示'a'的ascii碼對容應的陣列偏移量。在實際應用中不常見,但是從語法上來說是合法的。

2 字元本身為變數。如

int i;

int a[100];

for(i = 0; i < 100; i ++)printf("%d\n", a[i]);

這裡的a[i],下標就是i,本質上i是一個變數,訪問的時候是根據變數值進行訪問對應元素的。

13樓:匿名使用者

下標來是一個數字,一般都是這樣的。

自char 在c語言中,也算一個數吧,比如,你會發現字元'a'和其對應的ascii碼98(??),所以這樣子用是可以的。

不過,切記,char的範圍,它在-128~128之間,如果,沒有使用好,比如ch++的,導致溢位,那可是會一直迴圈下去的。

14樓:匿名使用者

可以的代表 字元對應的整型值

如 'a' 對應是 65

但是 使用字元 需要注意它的範圍

15樓:匿名使用者

ch是變數名。

在定義陣列的時候[ ]中必須是確定的整數,而在引用時可以是變數名,但是不能越界

s[ch]表示陣列第ch+1個元素

16樓:匿名使用者

不能是字元,ch應該是個int的變數,你可以在上面仔細找找。

c語言陣列問題,C語言陣列問題

int main i for i 0 i 這個要問數學老師才知道。c語言陣列問題 你的 問題有以下幾個 1 min和max沒有初始化 2 對於a min 和a max 沒有做迴圈參考 如下 include main printf 最大數是 d,下標是 d,最小數是 d,下標是 d n a max m...

c語言,陣列名與陣列元素的關係,C語言,陣列名與陣列第一個元素的關係

主要有bai如下區別 1 數du組zhi名代表 陣列的首地址,若daoc abcdef 則陣列名c代表陣列元素內 a 的地址。2 s用於輸出一容個字串,對應的引數是陣列名 即陣列的首地址 輸出從陣列起始位置到陣列中第一個 0 之間的全部字元。2 c用於輸出一個字元,即字元的值。而陣列名是陣列的首地址...

c語言陣列長度的問題,C語言陣列長度的問題

strlen函式並非用來求陣列長度,而是求字串中有效字元長度。您的定義 a 3 看上去是一個char型別陣列,但同時a也可以是一個字串,內容為 abc.之所以後面省略,是因為您的字串沒有結尾符 0 即這個字串在定義時未封閉。這導致 c 後面的內容被strlen函式計入字串長度。所以它在您的某一次執行...