方法:1、定義數(shù)組時(shí)給所有元素賦初值,例“int a[5]={1,2,3,4,5}”;2、給一部分元素賦值,例“int a[5]={1,2}”;3、定義時(shí)不指定數(shù)組長(zhǎng)度,直接給所有元素賦初值,例“int a[]={1,2,3,4,5}”。
本教程操作環(huán)境:windows7系統(tǒng)、c99版本、Dell G3電腦。
數(shù)組初始化
數(shù)組的初始化可以使用以下方法實(shí)現(xiàn):
1) 定義數(shù)組時(shí)給所有元素賦初值,這叫“完全初始化”。例如:
int a[5] = {1, 2, 3, 4, 5};
通過將數(shù)組元素的初值依次放在一對(duì)花括號(hào)中,如此初始化之后,a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5,即從左到右依次賦給每個(gè)元素。需要注意的是,初始化時(shí)各元素間是用逗號(hào)隔開的,不是用分號(hào)。
2) 可以只給一部分元素賦值,這叫“不完全初始化”。例如:
int a[5] = {1, 2};
定義的數(shù)組 a 有 5 個(gè)元素,但花括號(hào)內(nèi)只提供兩個(gè)初值,這表示只給前面兩個(gè)元素 a[0]、a[1] 初始化,而后面三個(gè)元素都沒有被初始化。不完全初始化時(shí),沒有被初始化的元素自動(dòng)為 0。
需要注意的是,“不完全初始化”和“完全不初始化”不一樣。如果“完全不初始化”,即只定義“int a[5];”而不初始化,那么各個(gè)元素的值就不是0了,所有元素都是垃圾值。
你也不能寫成“int a[5]={};”。如果大括號(hào)中什么都不寫,那就是極其嚴(yán)重的語法錯(cuò)誤。大括號(hào)中最少要寫一個(gè)數(shù)。比如“int a[5]={0};”,這時(shí)就是給數(shù)組“清零”,此時(shí)數(shù)組中每個(gè)元素都是零。此外,如果定義的數(shù)組的長(zhǎng)度比花括號(hào)中所提供的初值的個(gè)數(shù)少,也是語法錯(cuò)誤,如“a[2]={1,2,3,4,5};”。
3) 如果定義數(shù)組時(shí)就給數(shù)組中所有元素賦初值,那么就可以不指定數(shù)組的長(zhǎng)度,因?yàn)榇藭r(shí)元素的個(gè)數(shù)已經(jīng)確定了。編程時(shí)我們經(jīng)常都會(huì)使用這種寫法,因?yàn)榉奖悖炔粫?huì)出問題,也不用自己計(jì)算有幾個(gè)元素,系統(tǒng)會(huì)自動(dòng)分配空間。例如:
int a[5] = {1, 2, 3, 4, 5};
可以寫成:
int a[] = {1, 2, 3, 4, 5};
第二種寫法的花括號(hào)中有 5 個(gè)數(shù),所以系統(tǒng)會(huì)自動(dòng)定義數(shù)組 a 的長(zhǎng)度為 5。但是要注意,只有在定義數(shù)組時(shí)就初始化才可以這樣寫。如果定義數(shù)組時(shí)不初始化,那么省略數(shù)組長(zhǎng)度就是語法錯(cuò)誤。比如:
int a[];
那么編譯時(shí)就會(huì)提示錯(cuò)誤,編譯器會(huì)提示你沒有指定數(shù)組的長(zhǎng)度。
下面給大家寫一個(gè)簡(jiǎn)單的程序:
# include <stdio.h> int main(void) { int a[5] = {1, 2, 3, 4, 5}; int i; for (i=0; i<5; ++i) { printf("%dn", a[i]); } return 0; }
輸出結(jié)果是:
1 2 3 4 5
a 表示數(shù)組的名字,[5] 表示這個(gè)數(shù)組有 5 個(gè)元素,并分別用 a[0]、a[1]、a[2]、a[3]、a[4] 表示。并分別把花括號(hào)內(nèi)的 1、2、3、4、5 賦給變量 a[0]、a[1]、a[2]、a[3]、a[4]。再次強(qiáng)調(diào),下標(biāo)從 0 開始,即從 a[0] 開始,而不是 a[1]。
也可以用 scanf 手動(dòng)從鍵盤對(duì)數(shù)組進(jìn)行初始化:
# include <stdio.h> int main(void) { int a[5] = {0}; //數(shù)組清零初始化 int i; printf("請(qǐng)輸入5個(gè)數(shù):"); for (i=0; i<5; ++i) { scanf("%d", &a[i] ); } for (i=0; i<5; ++i) { printf("%dx20", a[i]); } printf("n"); return 0; }
輸出結(jié)果是:
請(qǐng)輸入5個(gè)數(shù):1 2 3 4 5 1 2 3 4 5
同使用 scanf 給字符數(shù)組輸入字符串時(shí)有所不同,輸入數(shù)字時(shí)必須用 for 循環(huán)進(jìn)行輸入。而輸入字符串時(shí)無須用循環(huán),直接用 scanf 就可以了。