intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình cơ bản: Ngôn ngữ lập trình C

Chia sẻ: Nguyễn Tình | Ngày: | Loại File: PDF | Số trang:80

64
lượt xem
17
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mời các bạn cùng tham khảo "Bài giảng Lập trình cơ bản: Ngôn ngữ lập trình C" để nắm chi tiết các kiến thức về mảng, con trỏ và xâu ký tự; mảng một chiều và nhiều chiều; con trỏ và các phép toán; xâu ký tự.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình cơ bản: Ngôn ngữ lập trình C

  1. Lập trình cơ bản: Ngôn ngữ lập trình C Đỗ Thị Mai Hường Bộ môn Hệ thống thông tin Khoa Công nghệ thông tin
  2. Mảng, con trỏ và xâu ký tự
  3. Tài liệu tham khảo • Kỹ thuật lập trình C: cơ sở và nâng cao, Phạm Văn Ất, Nhà xuất bản KHKT – Chương 6 • The C programming language 2nd Edition, Brian Kernighan and Dennis Ritchie, Prentice Hall Software Series – Chương 4 • The C programming language 2nd Edition, Brian Kernighan and Dennis Ritchie, Prentice 3 Hall Software Series – Chương Chương 7 - Phần 1 5
  4. Nội dung • Mảng một chiều • Mảng hai chiều • Con trỏ và phép toán trên con trỏ – Khai báo con trỏ – Phép gán con trỏ – Truy xuất giá trị qua con trỏ • Con trỏ và mảng • Cấp phát vùng nhớ cho con trỏ • Xâu ký tự – Khái niệm – Khởi tạo – Các thao tác trên xâu ký tự 4 Chương 7 - Phần 1
  5. PHẦN 1. MẢNG MỘT CHIỀU VÀ NHIỀU CHIỀU 5
  6. Mảng một chiều • Khái niệm • Khai báo • Truy xuất dữ liệu 6
  7. Dữ liệu kiểu mảng • Khái niệm – Là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa. – Biểu diễn một dãy các biến có cùng kiểu. Ví dụ: dãy các số nguyên, dãy các ký tự… – Kích thước được xác định ngay khi khai báo và không bao giờ thay đổi. – NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng. 7
  8. Khai báo biến mảng (tường minh) • Tường minh []; [][]…[]; – , …, : số lượng phần tử của mỗi chiều. • Lưu ý – Phải xác định cụ thể (hằng) khi khai báo. – Mảng nhiều chiều: = N1*N2*…*Nn 8 – Bộ nhớ sử dụng = *sizeof(
  9. Khai báo biến mảng (tường minh) • Ví dụ int Mang1Chieu[10]; 0 1 2 3 4 5 6 7 8 9 Mang1Chieu int Mang2Chieu[3][4]; 0 1 2 3 4 5 6 7 8 9 10 11 Mang2Chieu 0 1 2 9
  10. Khai báo biến mảng (không tường minh) • Cú pháp – Không tường minh (thông qua khai báo kiểu) typedef []; typedef []…[]; ; typedef int Mang1Chieu[10]; typedef int Mang2Chieu[3][4]; • Ví dụ Mang1Chieu m1, m2, m3; Mang2Chieu m4, m5; 10 Chương 7 - Phần 1
  11. Số phần tử của mảng • Phải xác định cụ thể số phần tử ngay lúc khai báo, không được sử dụng biến hoặc int n1 = 10; int a[n1]; hằng thường const int n2 = 20; int b[n2]; #define n1 10 #define n2 20 int a[n1]; //  int a[10]; int b[n1][n2]; //  int b[10][20]; • 11Nên sử dụng chỉ thị tiền xử lý #define để
  12. Khởi tạo giá trị cho mảng lúc khai báo • Gồm các cách sau – Khởi tạo giá trị cho mọi phần tử của mảng int a[4] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 int a[4] = {2912, 1706}; – Khởi tạo giá 0trị cho1 một số 3 tử đầu mảng 2 phần a 2912 1706 0 0 12
  13. Khởi tạo giá trị cho mảng lúc khai báo • Gồm các cách sau – Khởi tạo giá trị 0 cho mọi phần tử của mảng int a[4] = {0}; 0 1 2 3 a 0 0 0 0 – Tự động xác định số lượng phần tử int a[] = {2912, 1706, 1506, 1904}; 0 1 2 3 a 2912 1706 1506 1904 13
  14. Truy xuất đến một phần tử • Thông qua chỉ số [][]…[] • Ví dụ 0 1 2 3 – Cho mảng như sau int a[4]; – Các truy xuất • Hợp lệ: a[0], a[1], a[2], a[3] • Không hợp lệ: a[-1], a[4], a[5], … => Cho kết thường không như mong muốn! 14
  15. Gán dữ liệu kiểu mảng • Không được sử dụng phép gán thông thường mà phải gán trực tiếp giữa các phần tử tương ứng #define MAX 3 • Ví dụ typedef int MangSo[MAX]; MangSo a = {1, 2, 3}, b; b = a; // Sai for (int i = 0; i < 3; i++) b[i] = a[i]; 15 Chương 7 - Phần 1
  16. Ví dụ •1.Nhập mảng #include có n phần tử kiểu nguyên, in ra các phần 2. #define MAX 1000 3.tử void main() của mảng 4. { 5. int ary[MAX]; 6. int i,n; 7. printf(“Nhap n = ”); 8. scanf(“%d”,&n); 9. for(i=0; i
  17. Ví dụ 1. #include • Nhập 2 mảng có n phần tử kiểu nguyên, tính và in ra 2. #define MAX 1000 3. void main() 4.mảng tổng { 5. int ary1[MAX], ary2[MAX], sum[MAX]; 6. int i,n; 7. printf(“Nhap n = ”);scanf(“%d”,&n); 8. for(i=0; i
  18. Mảng hai chiều • Khái niệm • Khai báo • Truy xuất dữ liệu 18
  19. Ma Trận 0 1 … n-1 0 … n-1 0 0 … … Am,n An m-1 n-1 19
  20. Ma Trận 0 … n-1 0 … n-1 0 … n-1 0 0 0 … … … An n-1 n-1 n-1 dòng = cột dòng > cột dòng < cột 0 … n-1 0 … n-1 0 … n-1 0 0 0 … … … An n-1 n-1 n-1 dòng + cột = n-1 dòng + cột > n-1 dòng + cột < n-1 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2