C 速查手冊- 陣列 - 程式語言教學誌

文章推薦指數: 80 %
投票人數:10人

C 語言中的陣列(array) 為同質的資料結構(data structure) ,這意思是說陣列中只能存放相同資料型態的資料體,每個資料體被稱為陣列的元素,宣告格式如下. C速查手冊 陣列 C語言中的陣列(array)為同質的資料結構(datastructure),這意思是說陣列中只能存放相同資料型態的資料體,每個資料體被稱為陣列的元素,宣告格式如下 datatypename[number]; 宣告陣列須先指明這個陣列為何種資料型態,接著是陣列名稱,然後用中括弧圍起來的元素數量。

注意,中括弧[]在C語言中為陣列專用,因此帶有中括弧的識別字名稱即為陣列,陣列宣告或定義無須特別的關鍵字(keyword)。

下例宣告陣列同時指派初值 #include intmain(void) { inta[5]={69,124,25,323,54}; inti; for(i=0;i<5;i++){ printf("a[%d]=%d\n",i,a[i]); } return0; } /*《程式語言教學誌》的範例程式 http://kaiching.org/ 檔名:a.c 功能:示範陣列的宣告與使用 作者:張凱慶*/ 編譯後執行,結果如下 $gcca.c $a.out a[0]=69 a[1]=124 a[2]=25 a[3]=323 a[4]=54 $ 宣告及建立陣列變數的地方 inta[5]={69,124,25,323,54}; 利用大括弧圍住所有的陣列元素,同時每個元素用號分開。

陣列元素也可以各自分別給值,如下 inta[5]; a[0]=69; a[1]=124; a[2]=25; a[3]=323; a[4]=54; 其中,a[0]中括弧內為陣列的索引,指明是第0個陣列元素,C語言的陣列元素是從0開始索引的,因此5個陣列元素的索引依次為01234。

如果陣列所儲存的數值是由使用者輸入,或是需要經過計算,就需要利用類似上述的方法給值。

陣列名稱也就是指標(pointer),如下例改為由指標操作 #include intmain(void) { inta[5]={69,124,25,323,54}; int*iPtr=a; while(*iPtr!='\0'&&*iPtr>0){ printf("a-%p=%d\n",iPtr,*iPtr); iPtr++; } return0; } /*《程式語言教學誌》的範例程式 http://kaiching.org/ 檔名:arrayPtr.c 功能:示範使用指標操作陣列 作者:張凱慶*/ 編譯後執行,結果如下 $gccarrayPtr.c $a.out a-0x7ffee473e830=69 a-0x7ffee473e834=124 a-0x7ffee473e838=25 a-0x7ffee473e83c=323 a-0x7ffee473e840=54 $ 宣告指標變數的地方 int*iPtr=a; 這是將陣列名稱所具有的值指派給一個指標變數,由於陣列名稱就是指標,這個運算是合法的,但是陣列名稱不能直接拿來做算術運算,所以這裡用另一個指標變數當控制變數。

再來看到while迴圈的條件 while(*iPtr!='\0'&&*iPtr>0){ 當陣列元素的值等於'\0'的時候陣列就會結束,底下的迴圈(loop)印出每個陣列元素的記憶體位址與所儲存的整數。

陣列也可以是多維的,這是說,陣列中也可以陣列當作元素,如下為二維陣列的例子 #include intmain(void) { inti,j; inttable[10][10]; for(i=0;i<10;i++){ for(j=0;j<10;j++){ table[i][j]=i*j; } } printf("3*3=%2d\n",table[3][3]); printf("4*8=%2d\n",table[4][8]); printf("5*6=%2d\n",table[5][6]); printf("7*8=%2d\n",table[7][8]); printf("9*2=%2d\n",table[9][2]); return0; } /*《程式語言教學誌》的範例程式 http://kaiching.org/ 檔名:array2d.c 功能:示範二維陣列的使用 作者:張凱慶*/ 編譯後執行,結果如下 $gccarray2d.c $a.out 3*3= 9 4*8=32 5*6=30 7*8=56 9*2=18 $ 二維陣列就需要兩層的索引,就是識別字(identifier)名稱後連續兩個中括弧便代表二維陣列,第一個索引表示原始陣列中的第幾個陣列,第二個索引則是該第幾個陣列中的元素項目。

字元陣列(characterarray),也就是字串(string),經常直接用指標來處理,如 #include intmain(void) { char*aPtr="Timeandtidewaitfornoman."; while(*aPtr!='\0'){ if(*aPtr==''){ printf("\n"); aPtr++; continue; } if(*aPtr=='.'){ printf("\n"); break; } printf("%c",*aPtr); aPtr++; } return0; } /*《程式語言教學誌》的範例程式 http://kaiching.org/ 檔名:arraychar.c 功能:示範二維陣列的使用 作者:張凱慶*/ 編譯後執行,結果如下 $gccarraychar.c $a.out Time and tide wait for no man $ 這個程式跳過空格,一行列印一個英文單字,然後碰到句點時結束迴圈,也隨之結束程式的執行。

上一頁6.1指標 回C速查手冊首頁 下一頁6.2陣列 回C教材首頁 回程式語言教材首頁



請為這篇文章評分?