Phần tiếp theo của chuỗi 3 bài trong phần học lập trình từ cơ bản đến nâng cao trong chương trình với ngôn ngữ C++, đi vào kỹ hơn các đặc điểm của kiểu dữ liệu phức tạp struct
3. • POINTERS to STRUCTURES – ARROW OPERATOR
• REFERENCES to STRUCTURES
• ARRAYS and STRUCTURES within STRUCTURES
• C STRUCTURE vs. C++ STRUCTURES
3
4. Kiểu dữ liệu của con trỏ dùng để xác định kiểu
dữ liệu của vùng nhớ mà con trỏ có thể trỏ đến
Kiểu của con trỏ đến struct là kiểu của struct đó
Cú pháp khai báo: <kiểu của struct> *<tên biến con trỏ>
4
5. Để sử dụng con trỏ phải gán nó
với địa chỉ của biến muốn trỏ tới
Cú pháp: <tên biến con trỏ> = &<tên biến struct muốn trỏ tới>
Có thể khai báo và gán giá trị cho
biến con trỏ tới struct trong 1 dòng
<kiểu của struct> *<tên biến con trỏ> = &<tên biến struct muốn trỏ tới>
5
6. //Khai báo và khởi tạo biến NMLT kiểu LopHoc
//Khai báo biến con trỏ cùng kiểu LopHoc
//Gán địa chỉ của biến NMLT cho biến con trỏ
6
7. Toán tử mũi tên ->
Truy cập và gọi thành phần
của struct thông qua con trỏ
Toán tử dấu chấm .
Truy cập và gọi thành phần
của struct bình thường
Member Selection Operator
7
9. Sử dụng con trỏ đến struct để làm gì?
Công dụng quan trọng: làm tham số trong các hàm
Việc truyền 1 con trỏ luôn nhanh
hơn truyền cả một cái struct nha!!!
9
11. <ctime>
header
Kiểu time_t Kiểu struct tm
Biểu diễn ngày giờ hệ thống
bằng 1 số nguyên dài
(calendar time)
Có thành phần là các giá trị
thời gian riêng biệt
(broken-down time)
11
12. Đây cũng là cách hệ thống ngày giờ
trong các thiết bị hoạt động 12
13. Cơ sở cho mọi hàm ngày giờ khác trong C++
Hàm time()
time_t time(time_t *hientai)
Trả về giá trị thời gian hiện tại (calendar time): là số
giây trôi qua kể từ 00:00:00 1/1/1970 UTC (epoch time)
13
14. Chuyển thời gian từ dạng
calendar time qua broken-down time
Hàm
localtime()
struct tm *localtime(const time_t *hientai)
Trả về con trỏ tới struct kiểu tm của hientai:
thời gian biểu diễn ở giờ địa phương
14
16. Chuỗi thời gian có dạng:
thứ tháng ngày giờ:phút:giây năm n 0
Hàm asctime()
char *asctime(const struct tm *phentai)
Trả về con trỏ tới chuỗi biểu diễn thông tin
thời gian của struct được phentai trỏ tới
16
19. Thường sử dụng khi muốn truyền 1 struct vào 1
hàm và có sự thay đổi các thành phần của struct đó
sau khi rời hàm
Struct cũng có tham chiếu như
các kiểu dữ liệu khác
19
20. Sử dụng toán tử dấu chấm . để truy cập
thành phần của tham chiếu struct
20
25. Một trường hợp đặc biệt rất thường được dùng:
struct chứa con trỏ trỏ đến chính struct đó :3
Struct cũng có thể chứa
con trỏ tới 1 struct
25
Vấn đề: Hãy định nghĩa một kiểu dữ liệu struct có sự liên hệ
với một struct cùng tên theo một quy tắc nào đó
27. C++ struct có một số đặc
điểm hỗ trợ cho lập trình
hướng đối tượng (OOP)
Có 2 điểm khác biệt
C struct không thực sự định
nghĩa 1 kiểu dữ liệu mới
mà C++ làm được điều đó
27
28. Định nghĩa 1 struct trong
C++ là định nghĩa 1 kiểu
dữ liệu mới (data type)
mang tên struct đó
Dùng chính tên struct để
khai báo biến và làm giá trị
trả về của hàm
Định nghĩa 1 struct trong
C là chỉ coi tên struct là 1
cái thẻ để gắn (tag)
Muốn làm những việc khác
với cái tag này thì phải thêm
từ khóa struct phía trước
28
29. struct
Có 1 cách phổ biến để định
nghĩa một kiểu dữ liệu mới
cho struct trong C
struct
struct
29