Array
#Array
declare
data_type data_name[size]
array length 必須自行計算
陣列在宣告之後 裡面不會有值
宣告同時初始化
int scores[10] = {0}; // all init to zero
double numbers[10] = {0.0}; // all double to zero.zero
char symbols[10] = {'\0'}; // all char init to empty char(\0)
C99
variable length array type (Please check your compiler compatibility)
int len = 0
scanf("%d",&len);
int arr[len];
C 中陣列的索引值由 0 開始並不是沒有原因的,事實上陣列名稱就指向陣列記憶體的第一個位置的位址,而索引值表示所指定的陣列元素,相對於陣列第一個記憶體位置的位移量(Offset)。
位移的量與資料型態長度有關,如果是 int 整數,則每次位移時是一個 int 整數的長度,例如在上例中 arr[0] 索引值為 0,所以表示位移量為 0,自然就是指第一個元素,而 arr[9] 就是指相對於第一個元素的位移量為 9,C 就是根據陣列第一個元素的記憶體位置與 位移量來得到所指定要存取的陣列元素。
如果在宣告陣列時只希望初始幾個元素,則可以這麼宣告:
int scores[5] = {98, 76}; // {98,76,0,0,0,0}
double numbers[5] = {0.0, 0.1}; {0.0,0.0,0,0,0,0}
char symbols[5] = {'A', 'B'}; {'A','B',\0,\0,\0,\0}
如果沒有指定 array 大小 :
int scores[] = {1, 2, 3}; // len = 3
double numbers[] = {0.4, 3.2, 1.0, 4.2}; // len = 4
char symbols[] = {'A', 'B'}; // len = 2
比較 array 內容 :
一定要以
array1[i]
array2[j]
為單位
不可直接用 array 變數名稱作比較, 因為它代表的是記憶體位址
同理
char name[80];
name = "Justin";
此行為不合法
Last updated