[C] 6 陣列
阿新 • • 發佈:2018-11-12
陣列
定義
型別符 陣列名[常量表達式]
void func(int n) {
int a[2*n]; //合法,n的值從實參傳來
}
static int a[2*n]; //不合法,a陣列指定為static儲存方式
不進行初始化,值不可預料
一維陣列
定義
int a[10] = {0,1,2,3,4,5,6,7,8,9} //對全部陣列元素賦予初值
int a[10] = {0,1,2,3,4} //部分賦值,其他預設為0
int a[] = {1,2,3,4,5} //賦初值時,個數已定,不指定陣列長度
如果在定義數值型陣列時,指定了陣列的長度並對之初始化
- 字元型陣列:’\0’
- 指標型陣列:NULL,即空指標
二維陣列
定義
型別說明符 陣列名[常量表達式][常量表達式]
int a[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} } //全賦值
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12} //全賦值
int a[3][4] = { {0,1}, {}, {2} } //其餘自動為0
int a[][4] = { {1,2,3}, {}, {0,10} } //維度的長度預設
字元陣列
定義
ASCII值為0,結束標誌符’\0’
char c[] = {"I am happy"}; //初始化,系統在最後面自動加'\0'
char c[] = "I am happy"; //初始化
char c[] = {'I', ' ', 'a',...,'y','\0'}; //等同於
輸入輸出
%c
逐個字元輸入輸出
%s
將整個字串一次輸入或輸出
%s,對字串(string)的輸入輸出
- 輸出項是字元陣列名,遇’\0’停止輸出
- 輸入
scanf("%s",c); //c為陣列名,char c[15];
- 分隔符:空格、回車
- 未賦值的自動置’\0’
printf("%o",c); //用八進位制形式輸出陣列c的起始地址
字串處理函式
#include<string.h>
函式名 | 說明 |
---|---|
puts(str) | 輸出字串(以後’\0’結束的字元序列) |
gets(str) | 輸入字串,分隔符為回車 |
strcat(str1,str2) | String catenate結果放在字元陣列1中 |
strcpy(str1,str2) | string copy將字串2複製到字串1 |
strncpy(str1,str2,n) | 將str2前面n個字元複製到str1,取代str1前面的N個字元,n應該<str1的長度 |
strcmp(str1,str2) | string compare,自左至右逐個字元相比(ASCII碼) |
strlen(str) | string length,不包括’\n’ |
strlwr(str) | string lowercase字串小寫 |
strupr(str) | string uppercase字串大寫 |