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