二維數組初始化可「按行分段」或「按行連續」賦值,結果相同。例如 int a[5][3]:
/* 分段 */ static int a[5][3] = {{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
/* 連續 */ static int a[5][3] = {80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};
規則:
1. 可部分初始化,未列出者自動為 0。
2. 全部初始化時第一維長度可省略(static int a[][3]={...};)。
a[3][4] 可視為三個一維數組 a[0]、a[1]、a[2],各自擁有 4 個元素。注意:a[0] 等是數組名(首地址),不可作為下標變量直接使用。
字符數組用 char c[10]; 定義,每元素佔 1 字節。初始化可逐字符或用字符串字面值:
static char c[] = {'C',' ','p','r','o','g','r','a','m'};
static char c[] = "C program"; /* 自動補 '\0' 結束符 */
字符串在記憶體中以 \0 結尾,佔用長度 = 字符數 + 1。printf("%s", c) 與 scanf("%s", c) 可一次輸入輸出整串,但 scanf 遇空格停止,需用多數組或 gets 處理含空格字串。
數組名代表首元素地址,故 scanf("%s", st) 無需 &。輸出時從首地址逐字符列印至遇 \0 為止。