Bài giảng Kỹ thuật lập trình C: Bài 7 - Hoàng Quốc Tuấn

43 2 0
Bài giảng Kỹ thuật lập trình C: Bài 7 - Hoàng Quốc Tuấn

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Kỹ thuật lập trình C: Bài 7 Con trỏ và cấp phát bộ nhớ động, cung cấp cho người học những kiến thức như: Con trỏ và địa chỉ; Cấp phát và giải phóng bộ nhớ động. Mời các bạn cùng tham khảo!

KỸ THUẬT LẬP TRÌNH C BÀI 7: CON TRỎ VÀ CẤP PHÁT BỘ NHỚ ĐỘNG Hoàng Quốc Tuấn tuanhq@fpt.edu.vn http://hoangquoctuanpro.wordpress.com Nội dung Con trỏ địa Cấp phát giải phóng nhớ động I – Con trỏ địa Toán tử địa Con trỏ Quy tắc sử dụng trỏ – Toán tử địa Các khái niệm liên quan đến biến Địa biến Khái niệm Phân loại địa biến Phép lấy địa biến 1.1 – Các khái niệm liên quan đến biến Liên quan đến biến có ba khái niệm: Tên biến Kiểu biến Giá trị biến Ví dụ: int a = 15 ; Kiểu biến Tên biến Giá trị biến 1.2 – Địa biến Khái niệm Khi khai báo “int a = 15;” − Máy cấp phát cho biến a khoảng nhớ gồm bytes liên tiếp (kích thước kiểu int bytes) − Địa biến số thứ tự byte cấp cho biến 1.2 – Địa biến Phân loại địa biến − Địa hai biến kiểu int liên tiếp cách bytes − Địa hai biến kiểu float liên tiếp cách bytes Địa kiểu int, địa kiểu float, địa kiểu double, 1.2 – Địa biến Phép lấy địa biến − Tốn tử ngơi & cho ta địa đối tượng − Phép toán & áp dụng cho đối tượng nhớ, biến phần tử mảng − Tốn tử & khơng áp dụng cho biểu thức, biến có kiểu register (các biến chứa ghi CPU) – Con trỏ Khái niệm biến trỏ Phân loại trỏ Khai báo biến trỏ Hằng trỏ 2.1 – Khái niệm biến trỏ Con trỏ loại biến dùng để lưu địa Mỗi loại địa có kiểu trỏ tương ứng (phụ thuộc vào loại liệu lưu trữ địa đó) 10 – Khái niệm biến động Ví dụ: char *cp; // khai báo trỏ cp = (char*) malloc(75 * sizeof(char)); //tạo biến động Đoạn chương trình cấp phát nhớ gán địa khối nhớ cho trỏ cp Khối vùng nhớ lưu trữ dược 75 ký tự 29 – Cấp phát giải phóng nhớ Cấp phát: malloc calloc realloc Giải phóng: free 30 2.1 – Cấp phát nhớ hàm malloc Cú pháp: void * malloc(size_t size); Chức năng: Hàm malloc cấp phát vùng nhớ có kích thước size Hàm trả trỏ kiểu void chứa địa ô nhớ đầu vùng nhớ cấp phát Nếu không đủ vùng nhớ cấp phát trả giá trị NULL 31 #include #include #include void main() { clrscr(); void *v; v = malloc(100); if(v == NULL) { printf(“khong du bo nho”); exit(1); } printf(“Da cap bo nho”); getch(); } 32 2.2 – Cấp phát nhớ hàm calloc Cú pháp: (datatype*) calloc(n, sizeof(object)); Chức nằng: Cấp phát nhớ động cho kiểu liệu (có thể kiểu kiểu sở) Kiểu datatype kiểu liệu người lập trình tạo 33 #include #include #include struct hs { char ten[30]; unsigned int tuoi; unsigned int diem; } struct hs *p_hs; void main() { struct hs *p_hs; *p_hs = calloc(10, sizeof(struct hs); } 34 2.3 – Cấp phát nhớ realloc Cú pháp: (datatype *) realloc(buf_p, newsize); Chức năng: Hàm cấp phát lại nhớ Trong đó: buf_p trỏ trỏ đến vùng nhớ trước đó; newsize kích thước cần cấp phát 35 2.4 – Giải phóng nhớ free Cú pháp: void free (void *prt) Chức năng: giải phóng vùng nhớ trỏ trỏ ptr Nếu prt = NULL free khơng làm 36 #include #include #include void main() { int *num, n, i; clrscr(); printf(“Nhap so phan tu: ”); scanf(“%d”, &n); // cap bo nho num = (int*)malloc(n*sizeof(int)); for(i=0;i

Ngày đăng: 23/02/2022, 10:23

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan