一、一維陣列
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 將陣列的長...