TIN HỌC ĐẠI CƯƠNGwww.uit.edu.vn BÀI 10 BỘ NHỚ ĐỘNG KIỂU DỮ LIỆU CÓ CẤU TRÚC... Thông qua con trỏ, vùng nhớ biến được cấp phát và quản lý.. Các hàm thao tác vùng nhớ trên C được định ng
Trang 1TIN HỌC ĐẠI CƯƠNG
www.uit.edu.vn
BÀI 10
BỘ NHỚ ĐỘNG KIỂU DỮ LIỆU CÓ CẤU TRÚC
Trang 3NỘI DUNG BÀI BỘ NHỚ ĐỘNG
Khái niệm biến “động”
Trang 4 Biến động là biến được “tạo” ra khi chạy
chương trình Thông qua con trỏ, vùng nhớ biến được cấp phát và quản lý
Các hàm thao tác vùng nhớ trên C được định
nghĩa trong thư viện stdlib.h hoặc alloc.h
Trang 5p=( int *) malloc(80* sizeof ( int ));
Hàm free được dùng để giải phóng một vùng
nhớ đã được cấp phát thông qua con trỏ prt:
void free(void *ptr);
Trang 7 Hàm calloc cấp phát một vùng nhớ có kích
thước nitems* size bytes.
void *calloc(size_t nitems, size_t size);
Hàm realloc điều chỉnh lại vùng nhớ đã được
cấp phát block, với kích thước mới là size
bytes
void *realloc(void* block, size_t size);
Trang 8a = ( int *)malloc(n* sizeof ( int ));
a =( int *)calloc(n, sizeof ( int ));
Kiểm tra cấp phát thành công và thực hiện các
thao tác tiếp (như đối với mảng):
if (a!=NULL) {
// dùng như mảng cho a[0], a[1], …
…………
free(a);
}
Trang 12 Kiểu cấu trúc (hay bản ghi đối với một số NNLT
khác) là dạng dữ liệu thường được định nghĩa để
mô tả dữ liệu có nhiều thành phần thuộc nhiều kiểu dữ liệu khác nhau
Kiểu dữ liệu của từng thành phần có thể là các
kiểu dữ liệu cơ bản (ký tự, số nguyên, số thực), con trỏ, mảng, và thậm chí là một kiểu cấu trúc
Kiểu cấu trúc trên C được định nghĩa thông qua
từ khoá structKHÁI NIỆM
Trang 13} [<danh sách các biến cấu trúc>];
<tên cấu trúc> và <danh sách các biến
cấu trúc> là tùy chọn nhưng ít nhất phải có
một trong 2 được khai báo
Các biến cùng kiểu KDL có thể khai báo cách
nhau bởi dấu phẩy Các KDL khác nhau khai báo
riêng cách nhau bởi dấu chấm phẩy
KHAI BÁO STRUCT
Trang 14 Trong C, ta có thể đặt <tên kiểu> cho một <định
nghĩa kiểu> thông qua từ khoá typedef:typedef <định nghĩa kiểu>
Khi đó ta có thể khai báo một biến hs như sau:
KHAI BÁO STRUCT
Trang 15 Các thao tác trên mảng, con trỏ và vùng nhớ động
cho các biến cấu trúc hoàn toàn tương tự như đối với các biến có kiểu dữ liệu thông thường
Trang 17 Ta có thể truy xuất đến thành phần sHoTen của
cấu trúc bằng các cách tương đương như:
Trang 18 Ta có thể truy xuất đến thành phần sHoTen của
cấu trúc bằng các cách tương đương như:
Trang 19 Các thao tác trên hàm cho biến cấu trúc hoàn
toàn tương tự cho biến thông thường Chẳng hạn truyền tham biến và tham trị như sau:
Trang 20void NhapHS(PTR_HOCSINH phs, int stt);
void XuatHS(HOCSINH hs, int stt);
VÍ DỤ MINH HỌA
Trang 24www.uit.edu.vn