TÓM TẮT SESSION 11: Arrays ( Mảng )

------ TÓM TẮT SESSION 11: Arrays ( Mảng ) ---


+ Mảng là: Một mảng là một tập hợp các phần tử dữ liệu có cùng kiểu. Mỗi phần tử được lưu trữ ở các vị trí kế tiếp nhau trong bộ nhớ chính. Những phần tử này được gọi là phần tử mảng.

+ Khai báo 1 mảng: Một mảng có một vài đặc tính riêng biệt và phải được khai báo khi sử dụng chúng. Những đặc tính này bao gồm:
Ø  Lớp lưu trữ ( the strong class)
Ø  Kiểu dữ liệu ( the data tyde): của các phần tử mảng.
Ø  Tên mảng ( Tên mảng) : xác định vị trí phần tử đầu tiên của mảng.
Ø  Kích thước mảng ( array size) : một hằng số có giá trị nguyên dương.

+Cú pháp tổng quát khai báo một mảng như sau: storage_class data_type array_name[size_expr].

Việc quản lý mảng trong C: Một mảng được “đối xử” khác với một biến trong C. Thậm chí hai mảng có cùng kiểu và kích thước cũng không thể tương đương nhau. Hơn nữa, không thể gán một mảng trực tiếp cho một mảng khác. Thay vì thế, mỗi phần tử mảng phải được gán riêng lẻ tương ứng với từng phần tử của mảng khác. Các giá trị không thể được gán cho toàn bộ một mảng, ngoại trừ tại thời điểm khởi tạo. Tuy nhiên, từng phần tử không chỉ có thể được gán trị mà còn có thể được so sánh.

+ việc khởi tạo mảng: Các mảng không được khởi tạo tự động, trừ khi mỗi phần tử mảng được gán một giá trị riêng lẻ. Không nên dùng các mảng trước khi có sự khởi tạo thích hợp. Điều này là bởi vì không gian lưu trữ của mảng không được khởi tạo tự động, do đó dễ gây ra kết quả không lường trước. Mỗi khi các phần tử của một mảng chưa khởi tạo được sử dụng trong các biểu thức toán học, các giá trị đã tồn tại sẵn trong ô nhớ sẽ được sử dụng, các giá trị này không đảm bảo rằng có cùng kiểu như khai báo của mảng, trừ khi các phần tử của mảng được khởi tạo một cách rõ ràng. Điều này đúng không chỉ cho các mảng mà còn cho các biến thông thường.

+  Các mảng chuỗi/ký tự: Một chuỗi có thể được khai báo như là một mảng ký tự, và được kết thúc bởi một ký tự NULL. Mỗi ký tự của chuỗi chiếm 1 byte, và ký tự cuối cùng của chuỗi luôn luôn là ký tự ‘\0’. Ký tư ‘\0’ được gọi là ký tự null. Nó là một mã thoát (escape sequence)  tương tự như ‘\n’, thay thế cho ký tự có giá trị 0. Vì ‘\0’ luôn là ký tự cuối cùng của một chuỗi, nên các mảng ký tự phải có nhiều hơn một ký tự so với chiều dài tối đa mà chúng quản lý.

Mảng hai chiều: Chúng ta đã biết thế nào là mảng một chiều. Điều này có nghĩa là các mảng chỉ có một chỉ số. Các mảng có thể có nhiều hơn một chiều. Các mảng đa chiều giúp dễ dàng trình bày các đối tượng đa chiều, chẳng hạn một đồ thị với các dòng và cột hay tọa độ màn hình của máy tính. Các mảng đa chiều được khai báo giống như các mảng một chiều, ngoại trừ có thêm một cặp dấu ngoặc vuông [] trong trường hợp mảng hai chiều. Một mảng ba chiều sẽ cần ba cặp dấu ngoặc vuông,... Một cách tổng quát, một mảng đa chiều có thể được biểu diễn như sau: 
            storage_class data_type ary[exp1][exp2]....[expN];

Khởi tạo mảng đa chiều:  Khai báo mảng đa chiều có thể kết hợp với việc gán các giá trị khởi tạo. Cần phải cẩn thận lưu ý đến thứ tự các giá trị khởi tạo được gán cho các phần tử của mảng (chỉ có mảng external và static có thể được khởi tạo). Các phần tử trong dòng đầu tiên của mảng hai chiều sẽ được gán giá trị trước, sau đó đến các phần tử của dòng thứ hai, … Hãy xem sự khai báo mảng sau: 
            int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};


Comments

Popular Posts