tailieunhanh - Bài giảng Lập trình nâng cao - Chương 7: Con trỏ

Bài giảng "Lập trình nâng cao - Chương 7: Con trỏ" cung cấp cho người học các kiến thức: Cơ chế bộ nhớ, cách sử dụng, cơ chế truyền tham số, lỗi thường gặp, các phép toán, con trỏ và mảng. | Bài giảng Lập trình nâng cao - Chương 7 Con trỏ Con trỏ Lập trình nâng cao Một số nội dung lấy từ slice của Uri Dekel CMU Outline Cơ chế bộ nhớ Cách sử dụng Cơ chế truyền tham số Truyền bằng con trỏ - Pass-by-pointer Lỗi thường gặp Các phép toán Đổi kiểu - -- Con trỏ và mảng Cơ chế bộ nhớ Con trỏ là một biến Nó có một địa chỉ và lưu một giá trị Nhưng giá trị của nó được hiểu là địa chỉ bộ nhớ. X x biến kiểu X X p biến kiểu con trỏ tới giá trị kiểu X Kích thước của con trỏ không phụ thuộc kiểu dữ liệu nó trỏ tới. Gán giá trị cho con trỏ Gán giá trị số Gán địa chỉ của biến Gán giá trị con trỏ khác Gán địa chỉ của hàm ngoài chương trình Dereferencing Lấy giá trị biến con trỏ trỏ tới Nếu pX là con trỏ thì pX truy nhập vùng nhớ pX trỏ tới. - pC1 tương đương với c - c tương đương với amp c Dereferencing - Ví dụ Có thể dùng pX tương tự như dùng biến mà pX trỏ tới - Đọc giá trị - Ghi giá trị mới - Trả về giá trị pass-by-pointer void swap int px int py int c c px px py py c int main int a 20 int b 25 swap amp a amp b cout pass-by-pointer void swap int px int py int c c px px py py c int main int a 20 int b 25 swap amp a amp b cout pass-by-pointer void swap int px int py int c c px px py py c int main int a 20 int b 25 swap amp a amp b cout pass-by-pointer void swap int px int py int c c px px py py c int main int a 20 int b 25 swap amp a amp b cout pass-by-pointer void swap int px int py int c c px px py Tham số là con trỏ py c int main int a 20 Đối số là địa chỉ int b 25 swap amp a amp b cout Lỗi thường gặp con trỏ chưa khởi tạo Con trỏ chưa khởi tạo có thể chứa dữ liệu rác địa chỉ ngẫu nhiên Truy nhập chúng dẫn đến các lỗi ghi đè dữ liệu ghi vào vùng cấm ghi .segmenta on faults . Lỗi thường gặp truy nhập con trỏ null Tương đương truy nhập địa chỉ 0 trong bộ nhớ Lỗi thường gặp dangling references dangling reference truy nhập tới vùng nhớ không còn hợp lệ Ví dụ trả về con trỏ tới biến địa phương int weird_sum int a int b int c c a b return amp c Lời khuyên đừng giữ con

TỪ KHÓA LIÊN QUAN