C語言基礎(5)——數組


數組是一組有序數據的集合。數組中每一個元素都屬於同一個數據類型,且不能把不同類型的數據放在同一個數組中。


一維數組

一維數組它的元素只需要用數組名加一個下標,就能唯一確定。

一維數組的定義

定義一維數組的一般形式爲:
類型說明符 數組名【常量表達式】
例如:

int a[10];

表示定義了一個整型數組,數組名爲a,此數組包含十個整型元素;而且要注意,該數組下標是從0開始的,這10個元素是a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。上面的定義呢,就不存在數組元素a[10]。


那麼數組名命名規則是什麼呢?
其實數組名的命名規則和變量名相同,都遵循標識符命名規則。


數組的定義需要注意什麼?
常量表達式可以包括常量和符號常量,例如:

int a[6+8];

該行代碼就是合法的。
但需要注意的是不能包含變量。例如:
int a[n]; 這是不合法的。
還有就是,C語言不允許對數組的大小作動態定義,也就是說數組的大小不依賴於程序運行過程中變量的值。例如:

int n;
scanf("%d",&n);
int a[n];

上述定義數組的代碼是不對的,初學者一定不要犯這樣的錯誤

一位數組的引用

在定義數組並對其賦值後,就可以引用數組的元素了。
引用數組元素形式如下:
數組名【下標】
例如:

int a[10];		//前面有int,這是定義數組,指定數組包含十個元素
t=a[6];		//這裏的a[6]表示引用a數組中序號爲6的元素

數組的初始化

爲了使程序簡潔,常在定義數組的同時給元素賦值,這稱爲元素的初始化。
(1)在定義數組時對全部數組元素賦予數值。例如:

int a[10]={0,1,2,3,4,5,6,7,8,9};

將各元素初值放在一對花括號裏,數據間用逗號分隔。
(2)可以只給數組一部分元素賦值。例如:

int a[10]={0,1,2,3,4}

上述表示只給前面5個元素賦初值,系統自動給後5個元素賦初值爲0.
(3)如果使一個數組中的全部元素值爲0,可以寫成:

int a[10]={0,0,0,0,0,0,0,0,0,0}

int a[10]={0};

(4)對全部元素賦初值時,由於數據的個數已經確定,所以可以不指定數組長度。例如:

int a[ ]={1,2,3,4,5};

二維元素

二維元素常稱爲矩陣。

二維元素的定義

二維數組定義的一般形式:
類型說明符 數組名【常量表達式】【常量表達式】
二維數組基本概念與方法和一維數組相似。

二維數組的引用

二維數組元素的表達形式爲:
數組名【下標】【下標】
例如,a[2][3] 表示a數組中序號爲2的行中序號爲3的列的元素。
數組元素可以出現在表達式中,也可以被賦值,例如:
b[1][2]=a[2][3]/2
但要注意的是,在引用數組時,下標值應在已定義的數組大小的範圍內。例如:

int a[3][4];		//定義a爲3x4的二維數組
……
a[3][4]=3;		//不存在a[3][4]元素

在上述定義中,數組a可用的行下標範圍在0 ~ 2,列下標範圍在0 ~ 3,用a[3][4]表示元素顯然超過了數組的範圍。

二維數組的初始化

(1)分行給二維數組賦初值。例如:

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

(2)可以將所有元素都寫在一個花括號裏,按數組元素在內存裏的排列順序對各元素賦初值。例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

但該方法和第一種比起來,寫起來容易遺漏也不好檢查。
(3)可以對部分元素賦初值。例如:

int a[3][4]={{1},{5},{9}};

他的作用只是對各行的第一列(即序號爲0的列)的元素賦初值,其餘元素自動爲0。
也可以對各行的某一元素賦初值,例如:

int a[3][4]={{1},{0,6},{0,0,11}};

初始化的元素如下:
1 0 0 0
0 6 0 0
0 0 11 0
當然了,也可以對某幾行元素賦值:

int a[3][4]={{1},{5,6}};

數組元素爲:
1 0 0 0
5 6 0 0
0 0 11 0
(4)如果對全部元素都賦初值,則定義數組時對第一維長度可以不指定,但第二維長度不能省。例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

與下面的定義等價

int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

字符數組

C語言中沒有字符串類型,也沒有字符串變量,字符串是存放在字符型數組中的。

字符數組的定義

用來存放字符數據的數組是字符數組。在字符數組中一個元素內存放一個字符。例如:

char c[10];
c[0]='I';c[1]=' ';c[2]='a';c[3]='m';c[4]=' ';c[5]='h';c[6]='a';c[7]='p';c[8]='p';
c[9]='y';

由於字符型數據是以整型形式(ASCII代碼)存放的,因此也可以用整型數組來存放字符數據。例如:

int a[10];
c[0]='a';

字符數組的初始化

對字符數組初始化,把各個字符依次賦給數組中各元素。例如:

char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};

字符數組的輸入輸出

(1)逐個字符輸入輸出。用格式符“%d”輸入或輸出一個字符。例如:

char str[6];
int i;
for(i=0;i<6;i++)
	scanf("%c",&str[i]);		//字符數組輸入
for(i=0;i<6;i++)
	printf("%c",str[i]);		//字符數組輸出

(2)將整個字符串一次輸入或輸出,用“%s”格式符。例如:

char str[6];
scanf("%s",str);		//字符串輸入
printf("%s",str);		//字符串輸出

由於字符數組名錶示的就是數組的首地址,所以以%s的格式輸入輸出一個字符串時,字符數組名前面不能再取地址符號“&”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章