Nhập môn về lập trình (C8) Slide 1 Chương 8 Con trỏ (Pointer) Presenter Nhập môn về lập trình (C8) Slide 2 Learning outcomes L O 6 1 – Khai báo được con trỏ L O 6 2 – Truy xuất được dữ liệu qua con t[.]
Chương Con trỏ (Pointer) Presenter: Nhập môn lập trình (C8) Slide Learning outcomes L.O.6.1 – Khai báo trỏ L.O.6.2 – Truy xuất liệu qua trỏ L.O.6.3 – Giải thích cách cấp phát nhớ động L.O.6.4 – Sử dụng phép toán trỏ L.O.6.5 – Sử dụng trỏ trỏ khác L.O.6.6 – Dùng trỏ với kiểu cấu trúc L.O.6.7 – Hiểu liên quan trỏ mảng Nhập môn lập trình (C8) Slide Kiểu trỏ (pointer) Định nghĩa Kiểu trỏ là kiểu biến đặc biệt chỉ dùng để giữ địa chỉ (tham khảo) Dùng dấu * để định nghĩa Ví dụ: Toán Toán tử tử '&' cho phép gán địa chỉ biến vào trỏ sau : = & Ví dụ : Con trỏ biến được dùng lưu giữ địa chỉ các biến và cho phép truy xuất biến cách gián tiếp Ứng dụng thường dùng là tham số hàm Nhập môn lập trình (C8) Slide Kiểu trỏ (pointer) Ví dụ Nhập mơn lập trình (C8) Slide Con trỏ biến cấu trúc Tham số hàm kiểu trỏ cấu trúc Nhập mơn lập trình (C8) Slide Pointer và cấp phát động Ý tưởng Kiểu pointer rất thích hợp để quản lý dữ liệu có độ lớn chưa biết trước thời điểm lập trình Ví dụ : double param[100][100]; // cấp phát 10.000 phần tử kiểu double hay double** param; // chỉ cấp phát pointer (double) (double**) (double*) Nhập mơn lập trình (C8) Slide Pointer và cấp phát động hiện thực Sau có trỏ đến ma trận, để có ma trận thực sự, ta dùng hàm malloc (memory allocation) thư viện malloc.lib (#include malloc.h) để sinh các vector và phần tử Ví dụ : • Sinh m vector (m chưa biết trước) printf ("Nhap M: "); scanf_s("%d", &m); param = (double**) malloc(m * sizeof(double*)); • Sinh n phần tử mỗi vector (n chưa biết trước) printf ("Nhap N: "); scanf_s("%d", &n); for (i = 0; i < m; i++) param[i] = (double*) malloc(n * sizeof(double)); Chú ý toán tử sizeof(kiểu) trả về kích thước kiểu cần cấp phát nhớ Nhập mơn lập trình (C8) Slide ... sớ hàm Nhập mơn lập trình (C8) Slide Kiểu trỏ (pointer) Ví dụ Nhập môn lập trình (C8) Slide Con trỏ biến cấu trúc Tham số hàm kiểu trỏ cấu trúc Nhập môn lập trình (C8) Slide Pointer... Dùng trỏ với kiểu cấu trúc L.O.6.7 – Hiểu liên quan trỏ mảng Nhập mơn lập trình (C8) Slide Kiểu trỏ (pointer) Định nghĩa Kiểu trỏ là kiểu biến đặc biệt chỉ dùng để giữ địa chỉ... điểm lập trình Ví dụ : double param[100][100]; // cấp phát 10.000 phần tử kiểu double hay double** param; // chỉ cấp phát pointer (double) (double**) (double*) Nhập mơn lập trình (C8)