Khai báo và sử dụng mảng

Một phần của tài liệu Giáo trình lập trình cơ bản (ngành kỹ thuật lắp ráp, sửa chữa máy tính) (Trang 54 - 56)

Khai báo mảng

Trong C để khai báo một mảng ta sử dụng cú pháp khai báo sau:

kiểu_dữ_liệu tên_mảng [kích_thước_mảng];

Trong đó kiểu_dữ_liệu là kiểu dữ liệu của các phần tử trong mảng. tên_mảng là tên của mảng. kích_thứớc_mảng cho biết số phần tử trong mảng.

Ví dụ:

int mang_nguyen[10]; // khai báo mảng 10 phần tử có kiểu dữ liệu int

float mang_thuc[4]; // khai báo mảng 4 phần tử có kiểu dữ liệu float

char mang_ki_tu[6]; // khai báo mảng 6 phần tử có kiểu dữ liệu char

Trong ví dụ trên, mảng mang_nguyen được lưu trữ trên 20 ô nhớ (mỗi ô nhớ có kích thước 1 byte, 2 ô nhớ kích thước là 2 byte lưu trữ được một số nguyên kiểu int)

liên tiếp nhau. Do C đánh số các phần tử của mảng bắt đầu từ 0 nên phần tử thứ i của mảng sẽ có chỉ số là i-1 và do vậy sẽ có tên là mang_nguyen[i-1]. Ví dụ: phần tử thứ nhất của mảng là mang_nguyen[0], phần tử thứ 2 là mang_nguyen[1], phần tử thứ 5 là mang_nguyen[4]…

mang_nguyen[0] mang_nguyen[1] ... ... mang_nguyen[9]

Kích thước của mảng bằng kích thước một phần tử nhân với số phần

Đểtruy nhập vào một phần tử của mảng thông qua tên của nó. Tên một phần tử của mảng được tạo thành từ tên mảng và theo sau là chỉ số của phần tử đó trong mảng được đặt trong cặp dấu ngoặc vuông

tên_mảng[chỉ_số_của_phần_tử]

Ví dụ với khai báo

int mang_nguyen[3];

Thì mang_nguyen[0] sẽ là phần tử thứ nhất của mảng mang_nguyen[1] sẽ là phần tử thứ 2 của mảng

mang_nguyen[2] sẽ là phần tử thứ 3 của mảng Với mảng nhiều chiều như

int a[6][5];

thì a[0] là phần tử đầu tiên của một mảng, phần tử này bản thân nó lại là một mảng một chiều. Phần tử đầu tiên của mảng một chiều a[0] sẽ là a[0][0]. Phần tử tiếp theo của a[0] sẽ là a[0][1]… Và dễ dàng tính được a[2][3] sẽ là phần tử thứ 4 của phần tử thứ 3 của a.

Một cách tổng quát a[i][j] sẽ là phần tử thứ j+1 của a[i], mà phần tử a[i] lại là phần tử thứ i+1 của a.

5.1.2.1. Khai báo mảng 1 chiều

Cú pháp

Kiểu_mảng tên_mảng [ số_phần_tử];

Trong đó:

- Kiểu_mảng: đây là kiểu của mảng, là tên một kiểu dữ liệu đã tồn tại, có thể là kiểu chuẩn hoặc kiểu dữ liệu do người lập trình định nghĩa .

- tên_mảng : là tên của mảng, do người lập trình đặt, theo quy tắc về tên của C

- số_phần_tử : là hằng (hoặc biểu thức hằng) nguyên, dương là số phần tử của mảng.

Ví dụ:

int vector [15]; // tên mảng: vector, có 15 phần tử, kiểu int

float MT[10], D[20]; // có hai mảng kiểu float: MT có 10 phần tử, D có 20 phần

tử

char * s[30]; // s là mảng có 30 phần tử kiểu char * (mảng các con trỏ)

Khi gặp (dòng lệnh) định nghĩa một mảng, chương trình dịch sẽ cấp phát một vùng nhớ (lên tiếp) cho đủ các phần tử liên tiếp của mảng, ví dụ vector[15] sẽ được cấp phát một vùng nhớ có kích thước 15*sizeof(int) =30 byte

5.1.2.2. Khai báo mảng 2 chiều

Mảng hai chiều có thể hiểu như bảng gồm các dòng các cột, các phần tử thuộc cùng một kiểu dữ liệu nào đó. Mảng hai chiều được định nghĩa như sau.

Cú pháp

Kiểu_mảng tên_mảng [sd][sc];

Trong đó:

- Kiểu_mảng: đây là kiểu của mảng, là tên một kiểu dữ liệu đã tồn tại, có thể là kiểu chuẩn hoặc kiểu dữ liệu do người lập trình định nghĩa.

- tên_mảng : là tên của mảng, do người lập trình đặt, theo quy tắc về tên của C.

- sd, sc : là hằng (hoặc biểu thức hằng) nguyên, dương tương ứng là số dòng và số cột mảng, số phần tử của mảng sẽ là sd*sc.

Ví dụ:

int a[2][5]; // a là mảng số nguyên có 2 dòng, 5 cột (có 10 phần tử)

float D[3][10]; // D là mảng số thực có 3 dòng, 10 cột (có 30 phần

tử) char DS[5][30]; // DS là mảng kí tự có 5 dòng, 30 cột

Khi gặp một định nghĩa mảng, chương trình dịch sẽ cấp phát một vùng nhớ liên tiếp có kích thước là sd*sc*sizeof (Kiểu_mảng)cho mảng.

Có thể coi mảng 2 chiều n dòng, m cột là mảng 1 chiểu có n phần tử, mỗi phần tử lại là 1 mảng một chiều có m phần tử (mảng của mảng). Ví dụ với float D[3][10]

thể xem D là mảng có 3 phần tử D[0], D[1], D[2], mỗi phần tử này là mảng có 10 phần tử.

Một phần của tài liệu Giáo trình lập trình cơ bản (ngành kỹ thuật lắp ráp, sửa chữa máy tính) (Trang 54 - 56)

Tải bản đầy đủ (PDF)

(90 trang)