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

2021-04-21 10:02:09 字數 6288 閱讀 1778

1樓:匿名使用者

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是一個變數,訪問的時候是根據變數值進行訪問對應元素的。

2樓:匿名使用者

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

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

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

3樓:匿名使用者

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

如 'a' 對應是 65

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

4樓:匿名使用者

ch是變數名。

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

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

5樓:匿名使用者

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

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

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

6樓:非常可愛

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

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

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

7樓:龍之喵喵豬

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

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

8樓:匿名使用者

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

第二:定義陣列的是時候下標是代表陣列的長度,比如 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語言中的陣列是什麼意思?

9樓:手機使用者

把具有相同資料型別的若干變數按有序的形式組織起來,

以便於程式處理,這些資料元素的集合就是陣列,按照陣列

元素的型別不同,可分為:數值陣列、字元陣列、指標陣列

結構陣列等各種類別。

陣列說明的一般形式為:

型別說明符 陣列名[常量表示式],......;

其中型別說明符可以是任一種基本資料型別或構造資料型別

陣列名是定義的陣列識別符號。常量表示式表示資料元素的個

數,也就是陣列的長度。

對陣列型別的說明應注意:

1)陣列的型別實際上是陣列元素的取值型別。

2)陣列名的書寫應符合識別符號的書寫規範。

3)陣列名不能與其他變數名相同。

4)常量表示式表示陣列元素的個數,但是其下標從0開始計算

5)不能在方括號中用變數來表示元素的個數,但是可以用符號

常數或常量表示式。

6)允許在同一個型別說明中,說明多個陣列和多個變數。

陣列元素的表示方法

一般比較簡單就是陣列名[下標]來引用,先定義後用,如果

是小數的話,直接自動取整。

陣列賦值分為:初始化賦值和動態賦值

初始化賦值一般形式為:

static 型別說明符 陣列名[常量表示式]=;

static表示靜態儲存型別,c語言規定只有靜態儲存陣列和外部陣列

才可做初始化賦值。

c語言對陣列的初始化賦值還有幾個規定:

1)可以只給部分元素賦值。

2)只能給元素逐個賦值,不能給陣列整體賦值。

3)如不給可初始化的陣列賦初值,在在陣列說明中,可以不給出陣列

元素的個數。

下面看一下多維陣列

主要看一下二維陣列,其他的就可以用二維陣列類推得到

二維陣列的型別說明的一般形式是:

型別說明符 陣列名[常量表示式1][常量表示式2]...;

在c語言中二維陣列是按行排列的

二維陣列的表示方法:

陣列名[下標][下標]

二維陣列的初始化

二維陣列初始化也是在型別說明時給各下標變數賦以初值。 二維陣列可

按行分段賦值,也可按行連續賦值。

二維陣列的初始化還應該注意:

1)可以只對部分元素賦初值,未賦初值的元素自動取為0。

2)如對全部元素賦初值,則第一維的長度可以不給出。

字元陣列:

用來存放字元變數的陣列稱為字元陣列。

c語言允許用字串的方式對陣列作初始化賦值。例如:

static char c=; 可寫為:

static char c=; 或去掉{}寫為:

sratic char c="c program";

用字串方式賦值比用字元逐個賦值要多佔一個位元組, 用於存放字串結

束標誌'\0'。上面的陣列c在記憶體中的實際存放情況為: c program\0`\0'是

由c編譯系統自動加上的。由於採用了`\0'標誌,所以在用字串賦初值時一

般無須指定陣列的長度, 而由系統自行處理。在採用字串方式後,字元數

組的輸入輸出將變得簡單方便。 除了上述用字串賦初值的辦法外,還可用

printf函式和scanf函式一次性輸出輸入一個字元陣列中的字串, 而不必

使用迴圈語句逐個地輸入輸出每個字元。

void main()

printf("%s\n",c);

注意在本例的printf函式中,使用的格式字串為"%s", 表示輸出的是一

個字串。而在輸出表列中給出陣列名則可。 不能寫為: printf("%s",c);

void main()

char st[15];

本例中由於定義陣列長度為15, 因此輸入的字串長度必須小於15,

以留出一個位元組用於存放字串結束標誌`\0`。 應該說明的是,對一個字

符陣列,如果不作初始化賦值,則必須說明陣列長度。還應該特別注意的是,

當用scanf函式輸入字串時,字串中不能含有空格,否則將以空格作為串

的結束符。例如執行例4.8,當輸入的字串中含有空格時,運**況為:

input string:this is a book this 從輸出結果可以看出空格以後的字元

都未能輸出。 為了避免這種情況, 可多設幾個字元陣列分段存放含空格的

串。程式可改寫如下:

lesson

void main()

本程式分別設了四個陣列, 輸入的一行字元的空格分段分別裝入四個陣列。

然後分別輸出這四個陣列中的字串。在前面介紹過,scanf的各輸入項必須以

地址方式出現,如 &a,&b等。但在例4.8中卻是以陣列名方式出現的,這是為

什麼呢?這是由於在c語言中規定,陣列名就代表了該陣列的首地址。 整個

陣列是以首地址開頭的一塊連續的記憶體單元。如有字元陣列char c[10],在

記憶體可表示如圖4.2。設陣列c的首地址為2000,也就是說c[0]單元地址為2000。

則陣列名c就代表這個首地址。因此在c前面不能再加地址運算子&。如寫作

scanf("%s",&c);則是錯誤的。 在執行函式printf("%s",c) 時,按陣列名c

找到首地址,然後逐個輸出陣列中各個字元直到遇到字串終止標誌'\0'為止。

字串常用函式:

用於輸入輸出的字串函式在使用前應包含標頭檔案"stdio.h",使用其他字串

函式則應包含標頭檔案"string.h".下面介紹幾個常用的字串函式:

1)字串輸出函式 puts 格式:puts(字元陣列名) 功能:把字元陣列中的字元

串輸出到顯示器。

#include"stdio.h"

main()

2)字串輸入函式gets 格式:gets(字元陣列名) 功能:從標準輸入裝置上

輸入一個字串。

#include"stdio.h"

main()

tips:gets函式並不以空格作為字串輸入結束的標誌,而只是以回車作為輸入

結束,這是與scanf不同的部分

3)字串連線函式strcat 格式:strcat(字元陣列名1,字元陣列名2)

功能:把字元陣列2中的字串連線到字元陣列1中字串後面,並刪去字串

1後的串標誌"\0",本函式返回字元陣列1的首地址。

#include"string.h"

main()

4)字串拷貝函式strcpy 格式:strcpy(字元陣列名1,字元陣列名2)

功能:把字元陣列2中的字串拷貝到字元陣列1中,串結束標誌 "\0"也一同

拷貝,字元陣列2也可以是一個字元常量,就相當於把一個字串賦予一個字元陣列

#include"string.h"

main()

5)字串比較函式strcmp格式:strcmp(字元陣列1,字元陣列2) 功能:

按照ascii碼順序比較兩個陣列中的字串,並有函式返回值返回比較結果

#include"string.h"

main()

a[i]=n;

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

}例二:

main()

;int b[3],i,j,l;

for(i=0;i<=2;i++)

printf("\narray a:\n");

for(i=0;i<=2;i++)

printf("\narray b:\n");

for(i=0;i<3;i++)

printf("%5d",b[i]);

printf("\n");

}例三:

void main()

if(p!=i)

puts(cs[i]);

printf("\n");

c語言中陣列下標最大為多少C語言中陣列下標最大為多少

陣列下標最大為陣列個數減一,例如定義 int a 5 則陣列a的下標最大為4 因為在c語言中陣列的下標是從0開始的,這樣從0到陣列個數減一,共陣列的總個數。例如 include int main 執行結果 1 2 3 4 5 1 2 3 4 5 額 沒有那麼多的吧記憶體吧 比如說int a 5 他的...

c語言字串陣列的問題C語言字串陣列的問題

include int main scanf s a for i 0 a i 0 i for j 0 j 5 j 修改 1 下標從0 4,共5個 return 0 每行結尾的 僅僅是為了連線字串使用的,如果一個字串過長,寫在一行比較不合適,就在該行結尾處加上一個反斜槓 就可以在下邊的行繼續寫這個字串...

c語言中的陣列的意義是什麼,c語言中陣列有什麼作用

你想想,當我們想要把一類大量的資料儲存下來的時候 比如說小於1000的偶數 難道你要一個個的定義變數,然後再給他們一個個賦值?這樣重複了大量的操作。而陣列的出現解決了這個問題,你可以只用寫一句語句就可以獲得大量的同類資料儲存單元,如定義int a 1000 就得到了1000個整形資料,再配合迴圈,就...