Bài giảng Tin học cơ sở 4: Con trỏ - TS. Vũ Thị Hồng Nhạn
lượt xem 3
download
Bài giảng Tin học cơ sở 4: Con trỏ, cung cấp cho người học những kiến thức như ý nghĩa, cách khai báo con trỏ; Sử dụng con trỏ trong mảng, chuỗi; truyền mảng và chuỗi giữa các hàm qua con trỏ; truyền mảng và chuỗi giữa các hàm qua con trỏ; xử lý mảng qua con trỏ. 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 Tin học cơ sở 4: Con trỏ - TS. Vũ Thị Hồng Nhạn
- Tin Học Cơ Sở 4: Con trỏ Vũ Thị Hồng Nhạn (vthnhan@vnu.edu.vn) Human Machine Interaction Lab. Vietnam National Univ., Hanoi
- Nội dung Ý nghĩa, cách khai báo con tr S d ng con tr trong m ng, chu i Truy n m ng và chu i gi a các hàm qua con tr X lý m ng qua con tr 10/03/2016 Pointers, Arrays & Strings Page 2
- Con trỏ Con tr là m t bi n ch a đ a ch c a bi n Trong m t s tính toán dùng con tr là cách duy nh t đ gi i quy t v nđ S d ng con tr có ưu đi m thư ng giúp cho chương trình ng n g n và hi u qu Tuy nhiên cũng r t nguy hi m n u như l p trình viên không c n th n 10/03/2016 Pointers, Arrays & Strings Page 3
- Bộ nhớ Các bi n đư c lưu trong b nh B nh có th đư c xem như m t m ng r t l n (array) M i v trí trong b nh có m t đ a ch M t đ a ch là m t s nguyên, gi ng như ch m c trong m ng Trong C, m t đ a ch b nh đư c g i là m t “con tr ” C cho phép truy c p v trí b nh m t cách tr c ti p 10/03/2016 Pointers, Arrays & Strings Page 4
- Hai toán tử Toán t & Tr l i đ a ch c a m t đ i s Nói cách khác, tr l i con tr t i đ i s Đ i s (argument) ph i là m t “tên bi n” Toán t * Tr l i giá tr lưu đ a ch b nh c th Đ i s (argument) ph i là m t con tr 10/03/2016 Pointers, Arrays & Strings Page 5
- Khai báo Khai báo Ý nghĩa int i Một biến nguyên int *p Cấp phát 2 bytes để lưu giữ địa chỉ của biến nguyên, và vùng nhớ có tên là p int **m Con trỏ “trỏ tới” con trỏ nguyên Address 1203 p = &i Con trỏ p chỉ tới địa chỉ chứa i i=10 printf(“%p”, p) In ra địa chỉ của i (nằm trong p) p=1203 m = &p m trỏ tới p *p=10 printf(“%p”, m) In ra địa chỉ của p (trong m) 10/03/2016 Pointers, Arrays & Strings Page 6
- Ví dụ 1 Khai báo *px là nội dung của px int main(){ nên khi thực *px +=10 int x=6, y=7; giá trị của ix là 16 int *px, *py; printf("x=%d, y=%d\n", x, y); Gán px= &x; px=&ix py= &y; py=&iy *px +=10; *py +=10; printf("x=%d, y=%d\n", x, y); } 10/03/2016 Pointers, Arrays & Strings Page 7
- Ví dụ 2 Truyền ñịa chỉ sang hàm void init(int, int); //khai báo hàm int main(){ Khi nội dung c a bi n con tr *px, *py int x, y; thay đ i init(&x, &y); thì x, y c a chương trình thay đ i theo printf("x=%d, y=%d", x, y); getch(); return 0; } Truy n 2 tham s là void init(int *px, int *py){ //Định nghĩa hàm “địa chỉ của biến x, y” *px=6; // gán 6 cho nội dụng của px *py=7; } 10/03/2016 Pointers, Arrays & Strings Page 8
- Ví dụ 3 Truyền ñịa chỉ sang hàm Hoán v giá tr c a 2 bi n void swap(int *px, int *px){ int main(){ int temp = *px; int a=6, b=7; *px=*py; printf("Truoc: a=%d, b=%d\n", a, b); *py=temp; } swap(&a, &b); printf("Sau: a=%d, b=%d\n", a, b); getch(); return 0; } 10/03/2016 Pointers, Arrays & Strings Page 9
- Ví dụ 3 Truyền ñịa chỉ sang hàm 10/03/2016 Pointers, Arrays & Strings Page 10
- Con trỏ và mảng Con tr và m ng có liên quan g n gũi v i nhau M t bi n m ng th c t là m t con tr tr t i ph n t đ u tiên trong m ng Có th truy c p ph n t m ng s d ng ký hi u m ng ho c con tr a[0] tương đương v i *a a[1] tương đương v i *(a + 1) a[2] tương đương v i *(a + 2) 10/03/2016 Pointers, Arrays & Strings Page 11
- Ví dụ 4 Con trỏ trỏ ñến mảng trong hàm C ng thêm giá tr vào m t m ng int main(){ #define SIZE 4 int array[]={2,5,6,9}; int x=10, i; //định nghĩa hàm void add(int *ptr, int inum, int a){ add(array, SIZE, x); int i; for(i=0; i
- Ví dụ 4 Con trỏ trỏ ñến mảng trong hàm Gi s 245 là đ a ch array khi truy n vào hàm add() qua ptr, ptr=245 *ptr= *ptr +10 15 16 19 10/03/2016 Pointers, Arrays & Strings Page 13
- Ví dụ 5 Con trỏ và chuỗi Bi u di n chu i dùng “m ng” vs. “con tr ” #include #include • Biến con trỏ, thay vì sử dụng greeting[]=“Chao ban ” int main(){ • Cả 2 cách đều dành số byte cho chuỗi kèm theo ký tự char *greeting = "Chao ban "; null (\0) char name[28]; printf("Ten ban la gi? "); gets(name); printf("%s", greeting); puts(name); Ten ban la gi? Red Wine getch(); Chao ban Red Wine return 0; } - 10/03/2016 Pointers, Arrays & Strings Page 14
- Ví dụ 5 Con trỏ và chuỗi Đ i v i m ng Con tr Đ a ch c a ký t đ u ti n c a Có thêm bi n con tr “tr ” đ n m ng s là “tên m ng” tên greeting 10/03/2016 Pointers, Arrays & Strings Page 15
- Ví dụ 6 Khởi tạo mảng con trỏ Bi u di n chu i dùng “m ng” vs. “con tr ” #include #include int main(){ char *thang[12] ={"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; int month; printf("Nhap vao thang 1-12: "); scanf("%d", &month); printf("%s\n", thang[month-1]); getch(); return 0; } 10/03/2016 Pointers, Arrays & Strings Page 16
- Kh i t o m ng các con tr “tr đ n” các chu i chi m ít b nh hơn kh i t o m ng chu i!
- Ví dụ 7 Xử lý con trỏ “trỏ ñến” chuỗi char *temp; char name[10]=“Xin chao"; temp =name; puts( temp); // “Xin chào” Nh p danh sach tên ngư i, s p x p và in theo th t tăng d n Nh p vào 1 danh sách (m ng 2 chi u) M t m ng con tr “tr t i” danh sách đó Dùng con tr đ s p x p và In danh sách 10/03/2016 Pointers, Arrays & Strings Page 18
- Ví dụ 7 Xử lý con trỏ “trỏ ñến” chuỗi #include //sắp xếp #define MAXNUM 5 for(i=0; i
- Ví dụ 7 Xử lý con trỏ “trỏ ñến” chuỗi M ng con tr *ptr[MAXNUM] M ng các chu i Tr đ n chu i name[MAXNUM][MAXLEN] 10/03/2016 Pointers, Arrays & Strings Page 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học cơ sở 1 - Phan Thị Hà (chủ biên)
193 p | 193 | 22
-
Bài giảng Tin học cơ sở: Bài 16 - Đào Kiến Quốc
16 p | 142 | 13
-
Bài giảng Tin học cơ sở: Bài 3 - Đào Kiến Quốc
16 p | 141 | 13
-
Bài giảng Tin học cơ sở 1: Phần 2
87 p | 51 | 8
-
Bài giảng Tin học cơ sở: Bài 1 - Thông tin và xử lý thông tin
19 p | 143 | 8
-
Bài giảng Tin học cơ sở 1: Phần 1
110 p | 39 | 7
-
Bài giảng Tin học cơ sở 3 bài 1: Tổng quan về cơ sở dữ liệu quan hệ
11 p | 25 | 5
-
Bài giảng Tin học cơ sở: Chương 4 - Các thành phần nhập liệu
39 p | 69 | 5
-
Bài giảng Tin học cơ sở 1 - Chương 0: Giới thiệu môn học
8 p | 151 | 5
-
Bài giảng Tin học cơ sở (Basics of Informatics) - Chương 1: Thông tin và biểu diễn thông tin
18 p | 40 | 5
-
Bài giảng Tin học cơ sở (Basics of Informatics) - Chương 5: Các vấn đề xã hội của công nghệ thông tin
13 p | 37 | 4
-
Bài giảng Tin học cơ sở 3 bài 3: Table and relation
43 p | 12 | 4
-
Bài giảng Tin học cơ sở 2: Chương 0 - ThS. Nguyễn Mạnh Sơn
7 p | 119 | 4
-
Bài giảng Tin học cơ sở: Chương 6 - An toàn thông tin, các hướng phát triển mới trong công nghệ thông tin
15 p | 93 | 4
-
Bài giảng Tin học cơ sở: Chương 4 - Hệ thống thông tin và ngôn ngữ lập trình
18 p | 65 | 4
-
Bài giảng Tin học cơ sở 2: Chương 2 - ThS. Nguyễn Mạnh Sơn
38 p | 72 | 3
-
Bài giảng Tin học cơ sở 2: Chương 0 - Nguyễn Ngọc Duy
4 p | 82 | 2
-
Bài giảng Tin học cơ sở - Chương 1: Giới thiệu chung
13 p | 57 | 1
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