C陣列與字串

2021-07-08 16:02:55 字數 2618 閱讀 8030

所謂陣列,就是按照一定的順序排列,具有某種相同性質的同型別變數的集合。這些變數具有相同的名字和資料型別。陣列中的各資料項稱為陣列元素,用陣列名和下標名表示。

定義一維陣列的形式為:

資料型別  陣列名  [整形常量表示式];

說明:*資料型別是陣列中全體陣列元素的資料型別。

*陣列名用識別符號表示,整形常量表示式代表陣列具有的陣列元素個數。

*陣列元素的下標一律從0開始。

*編譯程式為陣列開闢連續的儲存單位,用來順序存放陣列的各陣列元素。用陣列名表示該陣列儲存區的首位址。

注意:定義陣列元素個數的表示式是整形常量表示式,不能出現變數或者非整形常量表示式。

例如下列陣列定義是正確的:

#define n 5

int   a[n];                     /*n不是變數,是符號常量,其值為5*/

int    b[2+3];               /*2+3是常量表示式,其值為5*/

int     c[10];

引用陣列元素的形式為:

陣列名[下表表示式];

注意:*定義時整形常量表示式與引用的陣列元素的下標表示式是完全不同的概念。對陣列定義:int   a[5];    這裡整形常量表示式5表示a陣列有5個陣列元素。對陣列元素的引用:a[3]=a[2]+a[5];   這裡下表表示式3和2均表示陣列元素的下標。而a[5]是錯誤的陣列元素引用,因為下表從0開始,所以陣列元素的小於5,下表已經越界。

*系統不檢查陣列元素的越界,只能由自己掌握。下標越界會破壞其它變數的值,因此程式設計時一定要保證陣列元素的下表不越界。

一維陣列初始化的形式為:

資料型別   陣列名[整形常量表示式]=;

初始化方法:

1.int    a[4]=;

陣列中有若干陣列元素,可在中給出各陣列元素的初值,各初值之間用逗號隔開。把中的初值依次賦給各陣列元素。表示把1,2,3,4依次賦給a[0], a[1], a[2], a[3]。

2.static  int  a[4]=;

只給部分陣列元素初始化。注意到關鍵字static,它表示a陣列的儲存型別為static(靜態儲存)。儲存型別為靜態儲存的變數或陣列的初值自動設定為0。即a[0]=1;  a[1]=2;  a[2]=0;   a[3]=0.

3.int   a[ ]=;

初始化時,定義陣列元素的個數的常量表示式可以省略。若陣列元素的個數定義省略,則系統根據初值的個數來確定陣列元素的個數。如上例,a陣列有3個陣列元素:a[0]=1;    a[1]=2;    a[2]=3。

需求:輸入100個數,輸出它們的平均值和這些數當中所有大於平均值的數。

#define  n  100

#include

int    main(void)

定義二維陣列的形式為:

資料型別    陣列名[整形常量表示式] [整形常量表示式];

資料型別是陣列全體陣列元素的資料型別;陣列名用識別符號表示;兩個整形變數表示式分別代表陣列具有的行數和列數。陣列元素的下標一律從0開始。儲存方式為按行儲存。

陣列元素的形式為:

陣列名[行下表表示式] [行下表表示式]

例如希望從鍵盤依次為陣列元素輸入資料,可以採用如下語句:

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

for(j=0;j<30;j++)

scanf("%d",&a[ i ] [ j ]);

二維陣列初始化的形式為:

資料型別    陣列名[整形常量表示式] [整形常量表示式]=;

初始化方式:

1.分行進行初始化。例如:int    a[2] [3]=, };

2.不分行的初始化。例如:int    a[2] [3]=;              //3個數字為一行

3.為部分陣列元素初始化。例如: int    a[2] [3]=, };

第一行只有2個初值,按順序分別賦給a[0] [0]和a[0] [1];第二行的初值賦給a[1] [0].

4.可以省略第一維的定義,但不能省略第二維的定義。系統根據初始化的資料個數和第2維德長度可以確定第一維的長度。例如:  int    a[ ] [3]=;

初始化資料為6個,第二維的長度為3,即每行3個數,所以a陣列的第一維是2.

省略第一維定義時,第一維的大小按如下規定:初值個數能被第二維正處,所得的商就是第一維的大小;若不能整除,則第一維的大小為商再加1。

需求:實現行列互換問題

#include

int main(void);

int b[3][2];

printf("互換前的陣列為:\n");

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

printf("\n");

} printf("互換後的陣列為:\n");

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

return 0;

}在c語言中,只能用乙個字元陣列來表示乙個字串。字元陣列的每個元素佔乙個位元組,字元陣列中包含乙個' \0  '字元,代表字串的結尾。因而字元陣列的元素個數,應該不少於被儲存的字串的字元數目加1.

下面以一段**說明字串變數的用法,**如下:

#include

#include

int   main(void)

else 

return   0;

}

c 字元陣列與字串

一 定義 字元陣列 儲存字元的陣列 字串 是使用最頻繁的字元陣列,是乙個特殊的字元陣列。c 中並沒有專門的字串的型別,乙個字串實際上就是乙個字元陣列,與普通字元陣列不同的是,字串的結尾有乙個字元 0,表示字串的結束。char 可以定義字元陣列,也可以定義字串。字串實際上是使用 null 字元 0 終...

C 陣列與字串

1,字串 一般的編譯器字串都是用順序儲存的。如何表示串的長度?方案1 用乙個變數來表示串的實際長度 方案2 在串尾儲存乙個不會在串 現的特殊字元作為串的終結符,表示串的結尾。2,模式匹配 bf演算法 樸素模式匹配 int bf char s char t kmp演算法,時間複雜度o n m 用多重迴...

C 字串指標與字串陣列

在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...