TAILIEUCHUNG - Bài giảng Ngôn ngữ lập trình - Chương 10: Con trỏ nâng cao

Bài giảng "Ngôn ngữ lập trình - Chương 10: Con trỏ nâng cao" cung cấp cho người học các kiến thức: Con trỏ cấp 2, con trỏ và mảng nhiều chiều, mảng con trỏ, con trỏ hàm. nội dung chi tiết. | Nội dung NMLT - Con trỏ nâng cao Con trỏ cấp 2 1 Con trỏ và mảng nhiều chiều 2 Mảng con trỏ 3 Con trỏ hàm 4 Con trỏ cấp 2 (con trỏ đến con trỏ) Đặt vấn đề Làm sao thay đổi giá trị của con trỏ (không phải giá trị mà nó trỏ đến) sau khi gọi hàm? NMLT - Con trỏ nâng cao void CapPhat(int *p, int n) { p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(a, 2); // a vẫn = NULL } NULL Con trỏ cấp 2 NMLT - Con trỏ nâng cao int *a = NULL 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int *p int n CapPhat 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 int *p N U L L N U L L 2 02 00 00 00 int n 22 00 00 00 Con trỏ cấp 2 Giải pháp Sử dụng tham chiếu int *&p (trong C++) Không thay đổi trực tiếp tham số mà trả về NMLT - Con trỏ nâng cao int* CapPhat(int n) { int *p = (int *)malloc(n * sizeof(int)); return p; } void CapPhat(int *&p, int n) { p = (int *)malloc(n * sizeof(int)); } Con trỏ cấp 2 Giải pháp Sử dụng con trỏ p trỏ đến con trỏ a này. Hàm sẽ thay đổi giá trị của con trỏ â gián tiếp thông qua con trỏ p. NMLT - Con trỏ nâng cao void CapPhat(int **p, int n) { *p = (int *)malloc(n * sizeof(int)); } void main() { int *a = NULL; CapPhat(&a, 4); } 0B Con trỏ cấp 2 NMLT - Con trỏ nâng cao int *a = NULL 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 int **p int n CapPhat 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 int **p 0B 00 00 00 N U L L 2 02 00 00 00 int n 22 00 00 00 Con trỏ cấp 2 Lưu ý NMLT - Con trỏ nâng cao int x = 12; int *ptr = &x; // OK int k = &x; ptr = k; // Lỗi int **ptr_to_ptr = &ptr; // OK int **ptr_to_ptr = &x; // Lỗi **ptr_to_ptr = 12; // OK *ptr_to_ptr = 12; // Lỗi printf(“%d”, ptr_to_ptr); // Địa chỉ ptr printf(“%d”, *ptr_to_ptr); // Giá trị ptr printf(“%d”, **ptr_to_ptr); // Giá trị x 2 1 Con trỏ và mảng 2 chiều NMLT - Con trỏ nâng cao 0 1 2 0 1 2 3 4 7 8 5 6 9 a 10 11 int a[3][4]; int 0 1 2 0 1 2 3 a int[4] Con trỏ và mảng 2 chiều Hướng tiếp cận 1 Các phần tử tạo thành mảng 1 chiều Sử dụng con trỏ int * để .

TỪ KHÓA LIÊN QUAN
TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.