2.5 數組
數組就是一片連續的內存區。這個內存區裏,保存着一組相同類型的數據。數組的類型沒有限制,但名稱仍然只能包含英文字母,數字和下劃線。
int int_arry[8]; // int 型數組, 保存了 8 個 int 型數據.
short short_arry[16]; // short 型數組, 保存了 16 個 short 型數據.
long* plong_arry[32]; // long 型指針數組, 保存了 32 個 long 型指針.
double double_arry[64]; // 雙精度浮點型數組, 保存了 64 個雙精度浮點數.
long along = 15;
plong_arry[0] = &along; // 通過索引來訪問數組元素.
double_arry[1] = 3.1415;
數組的名稱是指向這片連續內存區的 const 指針。因此既可以使用指針來訪問數組中的元素,也可以使用索引來訪問數組中的元素。
char char_arry[] = {0x55, 0xAA, 0x33, 0x99}; // 某些編譯器允許不指明數組長度, 但此時必須初始化該數組.
char* pointer = char_arry;
printf("0x%X\n", char_arry[2]); // 輸出 0x33.
printf("0x%X\n", (pointer+2)); // 同樣輸出 0x33.
指針和數組名都代表了某連續內存的首地址,因此可以通過索引,像使用數組那樣來使用指針。
int i;
char* char_arry = malloc(128);
for(i=0; i<128; i++)
{
char_arry[i] = i; // 像使用數組那樣使用指針.
printf("%d\n", char_arry[i]);
}
數組也可以是複合類型,也就是說,數組可以是結構體或者聯合體類型。
練習
按學號順序,將全班 32 個學生的性別、身高、體重信息錄入到程序中,並分別求出男生和女生的平均身高。