Chương 1 Kỹ thuật xử lý Mảng và Con trỏ1.1. Khái niệm MảngMảng (array) là một dãy các phần tử có cùng kiểu dữ liệu được đặt liên tiếp trong bộ nhớ.Mỗi phần tử được xác định bởi một chỉ số biểu thị vị trí của phần tử trong mảng. Số lượng phần tử trong mảng được gọi là kích thước của mảng. Kích thước của mảng là cố định và phải được xác định trước. Khai báo mảng gồm 10 phần tử số nguyên như sau: int a10; Phần tử đầu tiên của mảng luôn có chỉ số 0. Mỗi phần tử của mảng là một biến số nguyên. Việc cố gắng truy xuất một phần tử mảng không tồn tại (ví dụ: a1 hoặc a10) dẫn tới lỗi thực thi rất nghiêm trọng, được gọi là lỗi ‘vượt ngoài biên’. Mảng có thể khởi tạo các phần tử nằm trong một cặp dấu ngoặcint nums3 = {5, 10, 15}; int nums = {5, 10, 15}; int nums3 = {5, 10}; nums2 khởi tạo tới 0Tính tổng các số thõa điều kiệnS = 0;Lặp i = 1, 2, 3, … nNếu ai thõa điều kiện thìS = S + ai;Cuối lặp.Tính tích các số thõa điều kiệnP = 1;Lặp i = 1, 2, 3, … nNếu ai thõa điều kiện thìP = P ai;Cuối lặp.
Trang 1Chương 1
Kỹ thuật xử lý Mảng và Con trỏ
Trang 21.1 Khái niệm Mảng
Mảng (array) là một dãy các phần tử có cùng kiểu dữ
liệu được đặt liên tiếp trong bộ nhớ
Mỗi phần tử được xác định bởi một chỉ số biểu thị vị
Trang 31.1 Khái niệm Mảng
Khai báo mảng gồm 10 phần tử số nguyên như sau: int a[10];
Phần tử đầu tiên của mảng luôn có chỉ số 0
Mỗi phần tử của mảng là một biến số nguyên
Việc cố gắng truy xuất một phần tử mảng không tồn tại (ví dụ: a[-1] hoặc a[10]) dẫn tới lỗi thực thi rất nghiêm trọng, được gọi là lỗi ‘vượt ngoài biên’
Trang 6ví dụ 6 là số hoàn chỉnh vì 6 = 1 + 2 + 3 = 1 * 2 * 3
Trang 10if (a[i]>0) (demduong)++;
if (a[i]<0) (demam)++;
if(a[i]==0) (demkhong)++;
}
Trang 111.1 Khái niệm Mảng
Tìm phần tử đầu tiên trong mảng a thõa điều kiện
j = -1, i = 1;
Lặp (trong khi (i<=n) và (j = -1))
Nếu a[i] thõa điều kiện thì
Trang 12if(a[i]<0 && -a[i] %10 ==6)
j = i;
i++;
}return j;
Trang 201.2 Mảng hai chiều
Duyệt các phần tử của mảng.
//Duyệt từng dòng từ trên xuống dưới.
for(i = 0; i< so_dong; i++)
Trang 21//Duyệt các phần tử trên cột thứ k (0 <=k < so_cot)
for (i = 0; i < so_dong; i++)
{
// Xử lý phần tử a[i][k];
Trang 23 Cú pháp khai báo như sau : <tên kiểu dữ liệu> * <biến con trỏ> ;
Trang 24Địa chỉ & ô nhớ
Bộ nhớ Địa chỉ ô nhớ
Trang 32array & pointer
Trang 34array & pointer
Trang 37TỔNG KẾT
Cách quản lý ô nhớ của con trỏ.
Trang 39BÀI TẬP
int * p;
int x;
p = &x;
Con trỏ p sẽ lưu giữ giá trị địa chỉ của biến x.
Địa chỉ của biến con trỏ p là gì ?
Làm cách nào để quản lý được địa chỉ của biến con trỏ p ?