Giáo trình Cơ sở lập trình được biên soạn làm giáo trình cho sinh viên hệ đại học chuyên ngành Quản trị hệ thống thông tin thị trường và thương mại; đồng thời là tài liệu tham khảo cho các giáo viên trong quá trình giảng dạy môn học. Giáo trình kết cấu gồm 5 chương và chia thành 2 phần, phần 2 trình bày những nội dung về: mảng, xâu ký tự và con trỏ; hàm; kiểu dữ liệu có cấu trúc;... Mời các bạn cùng tham khảo!
Chương MẢNG, XÂU KÍ Tự VÀ CON TRỎ 3.1 MẢNG VÀ XÂU 3.1.1 Mảng Để giải trường hợp cần phải làm việc với số lượng lớn biến có kiểu liệu với nhau, ngơn ngữ c cung cấp loại biến đặc biệt gọi mảng Màng dãy phần tử có kiểu liệu đặt liên tiếp nhớ truy xuất đến phần tử thông qua số mảng Chỉ số màng thành phần đặt cặp [ ] đứng sau tên mảng Điều có nghĩa là, lưu giá trị kiểu int mà khơng cần phải khai báo biến khác nhau.Ví dụ, mảng chứa giá trị nguyên kiểu int có tên a biểu diễn sau: 2B i 2B 2B 2B 2B Trong trống biểu diễn phần tử mảng, trường hợp giá trị nguyên kiểu int Chúng đánh số từ đến phần tử mảng ln độ dài Như với mảng hiểu sau: - Tập hợp phần tử kiểu - Các phần tử phân biệt chi số mảng - Mỗi phần tử biến đơn có địa liên tiếp ô nhớ - Kiểu mảng kiểu phần tử Thông tin mảng phải bao gồm: - Kiểu mảng Ví dụ int 77 - Tên mảng Ví dụ a Tên mảng đặt phải tuân thủ theo qui tắc đặt tên - Số phần tử hay kích thước mảng Như ví dụ số phần tử mảng Cú pháp chung khai báo mảng định nghĩa sau: [sizel][[size2][ [sizeN]]]; Trong đó: Kiểu liệu kiểu liệu sở đà định nghĩa trên; Tên mảng tên đặt cho mảng Sizel, size2, , sizeN số qui định kích cỡ mảng số phần tử ưong mảng, số lượng thành phần [] đặt sau tên mảng qui định chiều mảng Ví dụ int a[10] ; a mảng chiều kiểu nguyên gồm có 10 phần từ a[0], a[l], , a[8], a[9] hoặcint arr[2][3]; arr mảng hai chiều kiểu nguyên gồm có 2x3 = phần tử arr[0][0], arr[0][l], arr[0][2], arr[l][0]> arr[l][l], arr[l][2] Chú ý: Các lỗi thường gặp: int n,m; int a[n][m]; //n, m chưa xác định Chú ý: sizel,size2 sizeN biến màng bên cặp ngoặc n phải giá trị khai báo mảng, mảng khối nhớ tĩnh có kích cỡ xác định trình biên dịch phải có khả xác định xem cần nhớ để cấp phát cho mảng trước lệnh thực Vì câu lệnh viết sai, chương trình báo lỗi như: 78 expected constant expression (cần biểu thức hằng) cannot allocate an array of constant size (khơng thể cấp phát mảng kích thước 0) 'a': unknown size (a: khơng biết kích cỡ) 3.1.1.1 Khởi tạo mảng Khi khai báo màng với tầm hoạt động địa phương (trong hàm), theo mặc định khơng khởi tạo, nội dung khơng xác định lưu giá trị lên Nếu khai báo màng toàn cục (bên tất hàm) đựợc khởi tạo tất cà phần tử đặt băng mảng có liệu kiểu số NULL màng có liệu kiểu trỏ Vì khai báo mảng tồn cục: char a[5]; phần tử a khởi tạo 0: 00000000 12 00000000 00000000 00000000 00000000 Tuy nhiên, khai báo mảng, gán giá trị khởi tạo cho phần tử Ví dụ: char a[5] = {0,1,4,3,2}; lệnh khai báo màng sau: 00000000 12 00000001 00000100 00000011 00000010 Hay viết theo giá trị thập phân là: 12 4 79 Điều tương đương với khởi tạo a[0] =0, a[l] = 1, a[2] = 4, a[3] = 3,a[4] = Tuy nhiên, khỏi tạo, khơng cần khởi tạo hết tất phần tử mảng Có thể tổng quát sau Với mảng chiều' [size]={gtl,gt2,gt3, ,gtk}; (k