C語言中的數組和字符串
一、數組的基本概念
所謂數組,就是按一定順序排列,具有某種相同性質的同類型變量的集合。這些變量具有相同的名字和數據類型,在內存中順序排列,並通過下標相互區分,所以也叫下標變量。數組中的各數據項成爲元素,用數組名和下標表示。
例如:int a[5];
分析:這裏a是一個基本數據類型int的數組,它由5個元素組成,即:a[0]、a[1]、a[2]、a[3]、a[4]。
二、一維數組
1.一維數組的定義
定義一維數組的形式爲:(數據類型 數組名[整型常量表達式];)
說明:a.數據類型是數組中全體數組元素的數據類型。
b.數組名用標識符表示,整型常量表達式代表數組具有的元素個數。
c.數組元素的下標一律從0開始。
d.編譯程序爲數組開闢連續的存儲單元,用來順序存放數組的各數組元素。用數組名錶示該數組存儲的首地址。
2.一維數組的引用
引用數組元素的形式爲:(數組名[下標表達式])
例如:
#include <stdio.h>
int main(void) {
int a[3], k=10;
a[3] = 5;
k = k + 7;
printf("a[3]=%d, k=%d\n", a[3], k);
}
輸出:a[3]=12, k=12
分析:因爲,a[3]不是a數組的數組元素(下標越界),根據數組元素連續存放的規則,a[3]代表 a[2]的下一個存儲單元,即k變量的存儲單元。
執行a[3]=5;就是把5存放到k變量的存儲單元,於是k的值由10變成5。在執行k=k+7;則k的值由5變成12。因爲a[3]和k變量對應同一個存儲單元,所以a[3]的
值也是12。
3.一維數組的初始化
一維數組初始化的形式爲:(數據類型 數組名[整型常量表達式]={初值1,初值2,......};)
注:初始化的數據個數不能超過數組元素的個數,否則出錯。
a.只給部分數組元素初始化:static int a[4] = {1, 2};(上述語句只給a[0]、a[1]賦了初值,即a[0] = 1;a[1] = 2;)
static爲靜態存儲,存儲類型爲static的變量或數組的初值自動設置爲0。
4.一維數組的應用
下面程序假定有十個數(要計算100個數的平均值及其大於平均值的數,只需將符號常量N改爲100即可):
三、二維數組
1、二維數組的定義
二維數組的定義形式爲:(數據類型 數組名[整型常量表達式][整型常量表達式];)
例如:int a[2][3];
分析:該語句表示:a.定義了整型二維數組a,其數組元素的類型是int。
b.a數組有2行3列,共2*3=6個元素。
c.a數組行下標爲0、1,列下標爲0、1、2.
a數組的元素是:a[0][0],a[0][1],a[0][2]
a[1][0],a[1][1],a[1][2]
2、二維數組的引用
引用數組元素的形式爲:(數組名[行下標表達式][列下標表達式];)
3、二維數組的初始化
二維數組初始化的形式爲:(數據類型 數組名[整常量表達式] [整常量表達式]={初始化數據 };)
注:可以省略第一維的定義,但不能省略第二維的定義。系統根據初始化的數據個數和第二維的長度可以確定第一維的長度
4、二維數組的應用
輸入5個學生的學號和3門課的成績,求每個學生的平均成績。輸出所有學生的學號、3門課的成績和平均成績。
四、字符數組
字符串本身就是數組。
例如:char cCity[10] = "北京";(北京沒有用[ ] 所以北京本身就是數組)