Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 12: Pointer (GV. Nguyễn Nhật Nam)
Số trang: 109
Loại file: pdf
Dung lượng: 666.93 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 10 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 12: Pointer (GV. Nguyễn Nhật Nam). Bài giảng có nội dung trình bày về khái niệm; thao tác trên pointer; pointer và mảng; đối số của hàm là pointer - truyền đối số theo số dạng tham số biến; hàm trả về pointer và mảng; chuỗi ký tự; pointer và việc định vị bộ nhớ động; mảng các pointer; pointer của pointer;... Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 12: Pointer (GV. Nguyễn Nhật Nam) CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER 12.1 Khaùi nieäm 12.7 Pointer vaø vieäc ñònh vò 12.2 Thao taùc treân POINTER boä nhôù ñoäng 12.3 POINTER vaø maûng 12.8 Maûng caùc pointer 12.4 Ñoái soá cuûa haøm laø pointer - 12.9 Pointer cuûa pointer truyeàn ñoái soá theo soá daïng tham 12.10 Ñoái soá cuûa haøm MAIN soá bieán 12.11 Pointer troû ñeán haøm 12.5 Haøm traû veà pointer vaø 12.12 ÖÙng duïng maûng Baøi taäp cuoái chöông 12.6 Chuoãi kyù töï CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Trong ngoân ngöõ C, moãi bieán vaø chuoãi kyù töï ñeàu ñöôïc löu tröõ trong boä nhôù vaø coù ñòa chæ rieâng, ñòa chæ naøy xaùc ñònh vò trí cuûa chuùng trong boä nhôù. Khi laäp trình trong C, nhieàu luùc chuùng ta caàn laøm vieäc vôùi caùc ñòa chæ naøy, vaø C uûng hoä ñieàu ñoù khi ñöa ra kieåu döõ lieäu pointer (taïm dòch laø con troû) ñeå khai baùo cho caùc bieán löu ñòa chæ. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Moät bieán coù kieåu pointer coù theå löu ñöôïc döõ lieäu trong noù, laø ñòa chæ cuûa moät ñoái töôïng ñang khaûo saùt. Ñoái töôïng ñoù coù theå laø moät bieán, moät chuoãi hoaëc moät haøm. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Ví duï 13.1: Chöông trình ñoåi trò #include void Swap (int doi_1, int doi_2); main() { int a = 3, b = 4;// Khai baùo vaø khôûi ñoäng trò // In trò tröôùc khi goïi haøm printf (“Tröôùc khi goïi haøm, trò cuûa bieán a = %d, b = %d.\n”); // Goïi haøm ñoåi trò Swap (a, b); // In trò sau khi goïi haøm printf (“Sau khi goïi haøm, trò cuûa bieán a = %d, b = %d.\n”);} CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Ví duï 13.1: Chöông trình ñoåi trò void Swap (int doi_1, int doi_2) { int temp = doi_1; doi_1 = doi_2 ; doi_2 = temp ; } Tröôùc khi goïi haøm, trò cuûa bieán a = 3, b = 4. Sau khi goïi haøm, trò cuûa bieán a = 3, b = 4. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Hình aûnh stack thöïc thi khi ñieàu khieån chöông trình ñang ôû doøng doi_1 = doi_2 ; CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Hình aûnh stack thöïc thi khi ñieàu khieån ñeán cuoái chöông trình CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Trong ngoân ngöõ C coù moät toaùn töû laáy ñòa chæ cuûa moät bieán ñang laøm vieäc, toaùn töû naøy laø moät daáu & (ampersand), taïm goïi laø toaùn töû laáy ñòa chæ. Cuù phaùp nhö sau: & bieán vôùi bieán laø moät bieán thuoäc kieåu baát kyø, nhöng khoâng ñöôïc laø bieán thanh ghi. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Neáu coù moät bieán ñaõ ñöôïc khai baùo laø int heä_soá_a; thì & heä_soá_a seõ laø ñòa chæ cuûa bieán heä_soá_a. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Cuù phaùp ñeå khai baùo bieán pointer: kieåu * teân_bieán_pointer vôùi - kieåu coù theå laø kieåu baát kyø, xaùc ñònh kieåu döõ lieäu coù theå ñöôïc ghi vaøo ñoái töôïng maø con troû ñang troû ñeán. - teân_bieán_pointer laø teân cuûa bieán con troû, moät danh hieäu hôïp leä. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Bieán hoaëc ñoái töôïng maø con troû ñang troû ñeán coù theå ñöôïc truy xuaát qua teân cuûa bieán con troû vaø daáu * ñi ngay tröôùc bieán con troû, cuù phaùp cuï theå nhö sau: * teân_bieán_con_troû CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Xeùt ví duï sau: int object; int *pint; object = 5; pint = &object; CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: AND R0, R0, #0 ; xoùa R0 ADD R0, R0, #5 ; R0 = 5 STR R0, R5, #0 ; object = 5 ADD R0, R5, #0 ; R0 = R5 + 0; R0 chöùa ñòa chæ cuûa bieán object STR R0, R5, #-1 ; R5 – 1: ñòa chæ cuûa bieán pint, pint CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Xeùt caùc khai baùo sau: int a, b; int *pa; Sau khi khai baùo, ta coù ba oâ nhôù cho ba bieán a, b vaø pa nhö sau: CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: void * pvoid; int a, * pint; double b, * pdouble; pvoid = (void *) &a; pint = (int *) pvoid; (*pint) ++; pvoid = (void *) &b; pdouble = (double *) pvoid; (*pdouble) -- ; CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.2 Caùc pheùp toaùn treân pointer Coù theå coäng, tröø moät pointer vôùi moät soá nguyeân (int, long,...). Keát qu ...
Nội dung trích xuất từ tài liệu:
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 12: Pointer (GV. Nguyễn Nhật Nam) CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER 12.1 Khaùi nieäm 12.7 Pointer vaø vieäc ñònh vò 12.2 Thao taùc treân POINTER boä nhôù ñoäng 12.3 POINTER vaø maûng 12.8 Maûng caùc pointer 12.4 Ñoái soá cuûa haøm laø pointer - 12.9 Pointer cuûa pointer truyeàn ñoái soá theo soá daïng tham 12.10 Ñoái soá cuûa haøm MAIN soá bieán 12.11 Pointer troû ñeán haøm 12.5 Haøm traû veà pointer vaø 12.12 ÖÙng duïng maûng Baøi taäp cuoái chöông 12.6 Chuoãi kyù töï CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Trong ngoân ngöõ C, moãi bieán vaø chuoãi kyù töï ñeàu ñöôïc löu tröõ trong boä nhôù vaø coù ñòa chæ rieâng, ñòa chæ naøy xaùc ñònh vò trí cuûa chuùng trong boä nhôù. Khi laäp trình trong C, nhieàu luùc chuùng ta caàn laøm vieäc vôùi caùc ñòa chæ naøy, vaø C uûng hoä ñieàu ñoù khi ñöa ra kieåu döõ lieäu pointer (taïm dòch laø con troû) ñeå khai baùo cho caùc bieán löu ñòa chæ. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Moät bieán coù kieåu pointer coù theå löu ñöôïc döõ lieäu trong noù, laø ñòa chæ cuûa moät ñoái töôïng ñang khaûo saùt. Ñoái töôïng ñoù coù theå laø moät bieán, moät chuoãi hoaëc moät haøm. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Ví duï 13.1: Chöông trình ñoåi trò #include void Swap (int doi_1, int doi_2); main() { int a = 3, b = 4;// Khai baùo vaø khôûi ñoäng trò // In trò tröôùc khi goïi haøm printf (“Tröôùc khi goïi haøm, trò cuûa bieán a = %d, b = %d.\n”); // Goïi haøm ñoåi trò Swap (a, b); // In trò sau khi goïi haøm printf (“Sau khi goïi haøm, trò cuûa bieán a = %d, b = %d.\n”);} CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Ví duï 13.1: Chöông trình ñoåi trò void Swap (int doi_1, int doi_2) { int temp = doi_1; doi_1 = doi_2 ; doi_2 = temp ; } Tröôùc khi goïi haøm, trò cuûa bieán a = 3, b = 4. Sau khi goïi haøm, trò cuûa bieán a = 3, b = 4. CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Hình aûnh stack thöïc thi khi ñieàu khieån chöông trình ñang ôû doøng doi_1 = doi_2 ; CHÖÔNG 12 POINTER 12.1 KHAÙI NIEÄM Hình aûnh stack thöïc thi khi ñieàu khieån ñeán cuoái chöông trình CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Trong ngoân ngöõ C coù moät toaùn töû laáy ñòa chæ cuûa moät bieán ñang laøm vieäc, toaùn töû naøy laø moät daáu & (ampersand), taïm goïi laø toaùn töû laáy ñòa chæ. Cuù phaùp nhö sau: & bieán vôùi bieán laø moät bieán thuoäc kieåu baát kyø, nhöng khoâng ñöôïc laø bieán thanh ghi. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Neáu coù moät bieán ñaõ ñöôïc khai baùo laø int heä_soá_a; thì & heä_soá_a seõ laø ñòa chæ cuûa bieán heä_soá_a. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Cuù phaùp ñeå khai baùo bieán pointer: kieåu * teân_bieán_pointer vôùi - kieåu coù theå laø kieåu baát kyø, xaùc ñònh kieåu döõ lieäu coù theå ñöôïc ghi vaøo ñoái töôïng maø con troû ñang troû ñeán. - teân_bieán_pointer laø teân cuûa bieán con troû, moät danh hieäu hôïp leä. CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Bieán hoaëc ñoái töôïng maø con troû ñang troû ñeán coù theå ñöôïc truy xuaát qua teân cuûa bieán con troû vaø daáu * ñi ngay tröôùc bieán con troû, cuù phaùp cuï theå nhö sau: * teân_bieán_con_troû CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Xeùt ví duï sau: int object; int *pint; object = 5; pint = &object; CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: AND R0, R0, #0 ; xoùa R0 ADD R0, R0, #5 ; R0 = 5 STR R0, R5, #0 ; object = 5 ADD R0, R5, #0 ; R0 = R5 + 0; R0 chöùa ñòa chæ cuûa bieán object STR R0, R5, #-1 ; R5 – 1: ñòa chæ cuûa bieán pint, pint CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: Xeùt caùc khai baùo sau: int a, b; int *pa; Sau khi khai baùo, ta coù ba oâ nhôù cho ba bieán a, b vaø pa nhö sau: CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.1 Khai baùo bieán pointer - pointer haèng Ví duï: void * pvoid; int a, * pint; double b, * pdouble; pvoid = (void *) &a; pint = (int *) pvoid; (*pint) ++; pvoid = (void *) &b; pdouble = (double *) pvoid; (*pdouble) -- ; CHÖÔNG 12 POINTER 12.2 THAO TAÙC TREÂN POINTER 12.2.2 Caùc pheùp toaùn treân pointer Coù theå coäng, tröø moät pointer vôùi moät soá nguyeân (int, long,...). Keát qu ...
Tìm kiếm theo từ khóa liên quan:
Bài giảng Hệ thống máy tính và ngôn ngữ C Hệ thống máy tính Ngôn ngữ C Thao tác trên pointer Hàm trả về pointer Chuỗi ký tựTài liệu liên quan:
-
114 trang 243 2 0
-
Bài giảng Nguyên lý hệ điều hành (Bài giảng tuần 1) - Nguyễn Hải Châu
6 trang 182 0 0 -
6 trang 175 0 0
-
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 149 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 134 0 0 -
Giáo trình Tin học đại cương: Phần 2 - Trần Đình Khang
118 trang 120 0 0 -
Giáo trình Ngôn ngữ lập trình 2
50 trang 108 0 0 -
101 thuật toán chương trình C: Phần 2
130 trang 91 0 0 -
91 trang 85 0 0
-
Giáo trình Office 2013 cơ bản: Phần 1
149 trang 77 0 0