Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 12 - TS. Nguyễn Phúc Khải
lượt xem 3
download
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 12: POINTER, được biên soạn gồm các nội dung chính sau: 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. Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 12 - TS. Nguyễn Phúc Khải
- om .c ng co an th o ng du u cu Company LOGO 1 CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Các nội dung: Khái niệm om .c Thao tác trên POINTER ng POINTER và mảng co Đối số của hàm là pointer - truyền đối số theo an số dạng tham số biến th ng Hàm trả về pointer và mảng o du Chuỗi ký tự u cu Pointer và việc định vị bộ nhớ động Mảng các pointer CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 2
- Các nội dung: Pointer của pointer om .c Đối số của hàm MAIN ng Pointer trỏ đến hàm co Ứng dụng an th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 3
- KHÁI NIỆM Một biến có kiểu pointer có thể lưu được dữ om liệu trong nó, là địa chỉ của một đối tượng .c đang khảo sát. Đối tượng đó có thể là một ng co biến, một chuỗi hoặc một hàm. an th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 4
- KHÁI NIỆM Ví dụ 13.1: Chương trình đổi trị om .c #include ng void Swap (int doi_1, int doi_2); co main() an { int a = 3, b = 4; th printf (“Trước khi gọi hàm, a = %d, b = %d.\n”,a,b); ng Swap (a, b); // Gọi hàm đổi trị o du printf (“Sau khi gọi hàm, a = %d, b = %d.\n”,a,b);} u void Swap (int doi_1, int doi_2) cu { int temp = doi_1; doi_1 = doi_2 ; doi_2 = temp ; } CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 5
- KHÁI NIỆM om .c ng co an th ng Hình ảnh stack o thực thi khi điều du khiển chương trình u đang ở dòng doi_1 cu = doi_2 ; CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 6
- KHÁI NIỆM om .c ng co an th o ng du Hình ảnh stack u cu thực thi khi điều khiển đến cuối chương trình CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 7
- THAO TÁC TRÊN POINTER Cú pháp để khai báo biến pointer: om .c kiểu *tên_biến_pointer ng Với: co kiểu có thể là kiểu bất kỳ, xác định kiểu dữ liệu có an th thể được ghi vào đối tượng mà con trỏ đang trỏ ng đến. o du tên_biến_pointer là tên của biến con trỏ, một u danh hiệu hợp lệ. cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 8
- THAO TÁC TRÊN POINTER Biến hoặc đối tượng mà con trỏ đang trỏ đến om có thể được truy xuất qua tên của biến con trỏ .c và dấu "*" đi ngay trước biến con trỏ, cú pháp ng co cụ thể như sau: an * tên_biến_con_trỏ th o ng du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 9
- THAO TÁC TRÊN POINTER Khai báo biến pointer - pointer hằng: om .c Trong ngôn ngữ C, một toán tử lấy địa chỉ của ng một biến đang làm việc, toán tử này là một dấu co & (ampersand), tạm gọi là toán tử lấy địa chỉ. an Cú pháp như sau: th ng & biến o du với biến là một biến thuộc kiểu bất kỳ, nhưng u cu không được là biến thanh ghi. CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 10
- THAO TÁC TRÊN POINTER Ví dụ: om .c Nếu có một biến đã được khai báo là: ng int he_so_a; co thì an & he_so_a th o ng sẽ là địa chỉ của biến he_so_a. du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 11
- THAO TÁC TRÊN POINTER Ví dụ: Xét ví dụ sau: om int object; .c ng int *pint; co object = 5; an pint = &object; th ng printf(“%d”,*pint); o du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 12
- THAO TÁC TRÊN POINTER Ví dụ: om void * pvoid; .c int a, * pint; ng co double b, * pdouble; an pvoid = (void *) &a; th pint = (int *) pvoid; ng (*pint) ++; o du pvoid = (void *) &b; u pdouble = (double *) pvoid; cu (*pdouble) -- ; CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 13
- THAO TÁC TRÊN POINTER Các phép toán trên pointer: om .c Có thể cộng, trừ một pointer với một số ng nguyên (int, long,...). Kết quả là một pointer. co Ví dụ : an th int *pi1, *pi2, n; ng pi1 = &n; o du pi2 = pi1 + 3; u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 14
- THAO TÁC TRÊN POINTER Ví dụ: Cho khai báo: om .c int a[20]; ng int *p; co p = &a[0]; an th p += 3; ng /* p lưu địa chỉ phần tử a[0 + 3], tức &a[3] */ o du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 15
- THAO TÁC TRÊN POINTER KHÔNG thể thực hiện các phép toán nhân, om chia, hoặc lấy dư một pointer với một số, vì .c pointer lưu địa chỉ, nên nếu thực hiện được ng co điều này cũng không có một ý nghĩa nào cả. an Phép trừ giữa hai pointer vẫn là một phép toán th ng hợp lệ, kết quả là một trị thuộc kiểu int biểu thị o khoảng cách (số phần tử) giữa hai pointer đó. du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 16
- THAO TÁC TRÊN POINTER Ví dụ: Xét chương trình ví dụ sau: om #include .c #include ng co main() an { int *p1, *p2; int a[10]; th p1 = &a[0]; ng p2 = &a[5]; o du printf ("Dia chi cua bien a[0] la: %p\n", p1); u printf ("Dia chi cua bien a[5] la: %p\n", p2); cu printf ("Khoang cach giua hai phan tu la %d int\n", p2 - p1); getch(); CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 17
- THAO TÁC TRÊN POINTER Ví dụ: Cho các khai báo sau: om .c int * a1; ng char * a2; co a1 = 0;/* Chương trình dịch sẽ nhắc nhở lệnh này */ an th a2 = (char *)0; ng if( a1 != a2) /* Chương trình dịch sẽ nhắc nhở kiểu của o du đối tượng */ u { cu a1 = (int *) a2; /* Hợp lệ vì đã ép kiểu */ } CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 18
- THAO TÁC TRÊN POINTER Ví dụ: om #include .c #include ng co main() an { th int *pint, a = 0x6141; ng char *pchar; o du clrscr(); u pint = &a; cu pchar = (char *) &a; CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 19
- THAO TÁC TRÊN POINTER printf ("Tri cua bien pint la: %p\n", pint); om printf ("Tri cua bien pchar la: %p\n", pchar); .c printf ("Doi tuong pint dang quan ly la %X \n", *pint); ng printf ("Doi tuong pchar dang quan ly la %X \n", *pchar); co pchar++; an th printf ("Doi tuong pchar dang quan ly la %X \n", *pchar); ng getch(); o } du u cu CuuDuongThanCong.com © TS. Nguyễn Phúc Khải https://fb.com/tailieudientucntt 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Hệ thống máy tính - Chương 3: Kiến trúc tập lệnh
24 p | 284 | 28
-
Bài giảng Hệ thống máy tính: Chương 5 - Nguyễn Kim Khánh
8 p | 128 | 16
-
Bài giảng Hệ thống máy tính: Chương 1 - Nguyễn Kim Khánh
9 p | 137 | 15
-
Bài giảng Hệ thống máy tính: Chương 2 - Nguyễn Kim Khánh
20 p | 131 | 15
-
Bài giảng Hệ thống máy tính - Chương 9: Lắp ráp và cài đặt máy tính
64 p | 122 | 14
-
Bài giảng Hệ thống máy tính - Chương 1: Tổng quan về Kiến trúc máy tính
61 p | 198 | 13
-
Bài giảng Hệ thống máy tính: Chương 3 - Nguyễn Kim Khánh
14 p | 126 | 13
-
Bài giảng Hệ thống máy tính - Chương 4: Hệ thống IO (Input Output System)
16 p | 268 | 7
-
Bài giảng Hệ thống máy tính (Computer Systems): Chương 2 - Nguyễn Kim Khánh
80 p | 14 | 5
-
Bài giảng Hệ thống máy tính và ngôn ngữ C - Chương 1: Ôn lại các kiến thức cơ bản về máy tính (GV. Nguyễn Nhật Nam)
58 p | 32 | 5
-
Bài giảng Hệ thống máy tính: Chương 2.2 - TS. Trần Thị Minh Khoa
23 p | 47 | 5
-
Bài giảng Hệ thống máy tính và ngôn ngữ lập trình - Chương 1: Ôn tập các kiến thức cơ bản về máy tính
39 p | 56 | 4
-
Bài giảng Hệ thống máy tính: Chương 2.1 - TS. Trần Thị Minh Khoa
30 p | 22 | 4
-
Bài giảng Hệ thống máy tính - Chương 5: Tổng quan hệ điều hành
8 p | 104 | 4
-
Bài giảng Hệ thống máy tính (Computer Systems): Chương 1 - Nguyễn Kim Khánh
68 p | 12 | 3
-
Bài giảng Hệ thống máy tính và ngôn ngữ C: Chương 1 - TS. Nguyễn Phúc Khải
39 p | 6 | 3
-
Bài giảng Hệ thống máy tính: Chương 1 - TS. Trần Thị Minh Khoa
15 p | 19 | 2
-
Bài giảng Hệ thống máy tính - Chương 0: Giới thiệu
7 p | 103 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn