C語言陣列

2021-09-30 16:36:18 字數 2630 閱讀 1233

一、一維陣列

1、陣列定義後,系統將給其分配一定大小的記憶體單元,其所佔記憶體單元的大小與陣列元素的型別和陣列的長度有關。

2、陣列中每個陣列元素的型別均相同,它們占用記憶體中連續的儲存單元,其中第乙個陣列元素的位址是整個陣列所佔記憶體塊的低位址,也是陣列所佔記憶體塊的首位址,最後乙個陣列元素的位址是整個陣列所佔記憶體塊的高位址(末位址)。

陣列所佔記憶體單元的位元組數 = 陣列大小 × sizeof(陣列元素型別)

一維陣列的賦值

1、在定義陣列時,如果沒有為陣列變數賦初值,那麼就不能省略陣列的大小。而且陣列不初始化,其陣列元素為隨機值。

int a[5]

=; 合法

int a[5]

=; 合法

int a=

; 合法,常考,後面決定前面的大小!

2、一維陣列的定義;

int a[

5];注意這個地方有乙個重要考點,定義時陣列的個數不是變數一定是常量。

int a[

5] 合法,最正常的陣列

int a[1+

1] 合法,個數是常量2,是個算術表示式

int a[1/

2+4] 合法,同樣是算術表示式

int x=5,

int a[x]

; 不合法,因為個數是x,是個變數,非法的,

define p 5

int a[p] 合法,define 後的的p是符號常量,只是長得像變數

3、使用迴圈語句來逐一賦值

4、函式賦值

1)使用memset函式來賦值

功能:就是將s為首位址的一片連續的n個位元組記憶體單元都賦值為ch。這種方法是適合於位元組型陣列的整體賦值,或對非位元組型陣列進行清0。

2) 使用memcpy函式實現陣列間的賦值

將s為首位址的一片連續的n個位元組記憶體單元的值拷貝到以d為首位址的一片連續的記憶體單元中 。

在使用memset和memcpy函式時,源程式中要包含標頭檔案「string.h」。

二、二維陣列

1、二維陣列的初始化

int a[2]

[3]=

; 合法,很標準的二維的賦值。

int a[2]

[3]=

; 合法,後面乙個預設為0。

int a[2]

[3]=

}; 合法,每行三個。

int a[2]

[3]=

}; 合法,第一行最後乙個預設為0。

int a[2]

[3]=

; 不合法,賦值的個數多餘陣列的個數了。

int a[

3]=; 不合法,不可以預設行的個數。

int a[2]

=; 合法,可以預設列的個數。

三、字串與陣列

字串是一種以『\0』結尾的字元陣列

char str[

]=」china」;

char str=

;char str=

;//陣列大小也為6

不等價於 char str=

;//陣列大小為5,不是字串沒有結尾標誌。

char str[10]

=」china」;

等價於char str[10]

=;

c語言中沒有字串變數,所以用陣列和指標存放字串:

1、char   ch[10]

=; 對

2、char ch[10]

=「abcdefgh」; 對

3、char ch[10]

=; 對

4、char

*p=「abcdefgh」; 對

5、char

*p; p=「abcdefgh」; 對

6、char ch[10]

; ch=「abcdefgh」; 錯了!陣列名不可以賦值!

7、char

*p=; 錯了!不能夠出現大括號!

字串的輸入

字串的輸出

puts()

printf()

字串的長度

strlen(字串的位址)

c語言陣列

陣列 構造資料型別之一 陣列是具有一定順序關係的若干個變數的集合,組成陣列的各個變數稱為陣列的元素。陣列中各元素的資料型別要求相同,用陣列名和下標確定。陣列可以是一維的,也可以是多維的。在科學計算中,許多重要的應用都是基於陣列的。所謂一維陣列是指只有乙個下標的陣列。它在計算機的記憶體中是連續儲存的。...

C語言陣列

在變數作函式引數時,所進行的值傳送是單向的。即只能從實參傳向形參,不能從形參傳回實參。形參的初值和實參相同,而形參的值發生改變後,實參並不變化,兩者的終值是不同的。而當用陣列名作函式引數時,情況則不同。由於實際上形參和實參為同一陣列,因此當形引數組發生變化時,實參陣列也隨之變化。當然這種情況不能理解...

C語言 陣列

陣列 void test1 for int i 0 i 5 i for int i 0 i 5 i 陣列資料倒序存放 void test2 printf 請輸入5個學生的成績 n for int i 4 i 0 i printf 輸出5個學生的成績 n for int i 0 i 5 i 將陣列的長...