Ngôn ngữ lập trình C/Khai báo/Khai báo Mảng

From Wikiversity

Mảng[edit]

Đối với nhiều người lập trình, trong hầu hết các ngôn ngữ tương tự C, kiểu của một mảng nằm trong số phần tử mà nó chứa. Do vậy, khai báo sau đây có thể dùng trong các ngôn ngữ như Java hay C# để khai báo một mảng 10 giá trị số nguyên.

int[10] cat; /* THIS IS NOT VALID C CODE */

Mặc dù vậy, như đã nhắc tới trước đây, nguyên lý trong cú pháp khai báo của C làm cho việc khai báo tương tự như việc sử dụng của biến. Thí dụ: một truy cập tới mảng này chẳng hạn như là cat[i], lúc khai khai báo lại cũng có cú pháp dạng:

int cat[10];

Mảng của các mảng[edit]

Tương tự như con trỏ, kiểu mảng có thể được lồng nhau. Vì trong cách viết mảng sử dụng các ngoặc vuông ([]), là một cách viết hậu tố, nên kích cỡ của mảng bên trong thì được ghi ở bên ngoài (hay đằng sau):

double dog[5][12];

Câu lệnh trên khai báo rằng dog là một mảng có năm phần tử. Mỗi phần tử là một mảng của 12 giá trị double.

Mảng của các con trỏ[edit]

Vì kiểu của phần trong một mảng tự nó lại là một kiểu của C, mảng của các con trỏ đương nhiên cũng có cấu trúc:

char *mice[10];

Câu lệnh này khai báo biến mice là mảng của 10 phần tử, trong đó, mỗi phần tử là một con trỏ chỉ tới char.

Con trỏ chỉ tới các mảng[edit]

Để khai báo một biến là một con trỏ chỉ tới một mảng, nhất thiết phải dùng tới dấu ngoặc đơn. Nó tương tự như cách dùng ngoặc để đổi thứ tự ưu tiên cho phép toán (phép toán trong ngoặc sẽ được tính trước) chẳng hạn:

2 + 3 * 4
(2 + 3) * 4

Hoàn toàn tương tự cho con trỏ chỉ tới các mảng. Lưu ý rằng dấu ngoặc vuông ([]) có độ ưu tiên cao hơn dấu sao (*), do đó khai báo sẽ có dạng:

double (*elephant)[20];

Câu lệnh này khai báo biến elephant là một con trỏ, và nó chỉ tới một mảng có 20 giá trị kiểu double. Để khai báo một con trỏ chỉ tới dãy các con trỏ, chỉ cần kết hợp các cách viết:

int *(*crocodile)[15];