Bài giảng Kỹ thuật lập trình - Chương 5: Con trỏ (pointer)
Số trang: 25
Loại file: pptx
Dung lượng: 220.09 KB
Lượt xem: 9
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 5 trình bày những kiến thức về con trỏ (pointer). Những nội dung chính trong chương này gồm có: Khái niệm về con trỏ, toán tử con trỏ, thao tác trên con trỏ, con trỏ void, con trỏ null, mảng con trỏ, cấp phát bộ nhớ động.
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 5: Con trỏ (pointer)Chương 5: con trỏ (pointer) 5/4/17 1AgendaKhái niệm về con trỏToán tử con trỏThao tác trên con trỏCon trỏ voidCon trỏ nullMảng con trỏCấp phát bộ nhớ động 5/4/17 21. Khái niệm về con trỏCon trỏ là 1 biến chứa 1 địa chỉ bộ nhớ. Địa chỉ này là vị trí của 1 đối tượng khác (thường là 1 biến) trong bộ nhớ. 5/4/17 31. Khái niệm về con trỏGiống như tất cả các biến, con trỏ phải được khai báo trước khi sử dụng.Dạng tổng quát để khai báo 1 biến con type *pointerName; trỏ: ◦ type: Kiểu dữ liệu của biến mà con trỏ trỏ đến 5/4/17 42. Toán tử con trỏ (pointeroperation) con trỏ là * và &Có 2 toán tửToán tử &: là toán tử 1 ngôi trả về địa chỉ bộ nhớ của toán hạng của nó. &variableNameCú pháp:Ví dụ: 5/4/17 5 int y = 50; // Khai báo biến y2. Toán tử con trỏ (pointeroperation)int y = 50;int *yPtr;yPtr = &y; yPtr = ??? 5/4/17 62. Toán tử con trỏ (pointeroperation)là toán tử một ngôi trảToán tử * : về giá trị tại địa chỉ con trỏ trỏ đếnCú pháp: *pointerNameVí dụ: int y = 50; // Khai báo biến y int *yPtr; // Khai báo con trỏ yPtr 5/4/17 7 cout 2. Toán tử con trỏ (pointeroperation)Ví dụ 1: #include int main() { int a; int *aPtr; // aPtr is an int * -- pointer to an integer a = 7; aPtr = &a; cout 2. Toán tử con trỏ (pointer operation)Ví dụ 2:#include int main (){ int firstvalue, secondvalue; int * mypointer; mypointer = &firstvalue; *mypointer = 20; mypointer = &secondvalue; *mypointer = 10; cout 2. Toán tử con trỏ (pointeroperation)Ví dụ 3:#include void main (){ int firstvalue = 5, secondvalue = 15; int * p1, * p2; p1 = &firstvalue; p2 = &secondvalue; *p1 = 10;// value pointed by p1 = 10 *p2 = *p1; p1 = p2; //value of pointer is copied *p1 = 20; // value pointed by p1 = 20 cout 3. Các thao tác trên con trỏLệnhgáncontrỏ:dùngphép gánđểgángiátrịcủamộtcon trỏchomộtcontrỏkháccócùng kiểuVí dụ: int x; int *p1, *p2; p1 = &x; p2 = p1; 5/4/17 11Sau khi đọan lệnh trên được thực3. Các thao tác trên con trỏPhép toán số học trên con trỏ: Chỉ có 2 phép toán sử dụng trên con trỏ là phép cộng và phép trừ. 5/4/17 123. Các thao tác trên con trỏTất cả con trỏ sẽ tăng hay giảm với đơn vị là kích thước của kiểu dữ liệu của nó.char *ch;int *i;ch = ch + 3; ch = ???i = i + 2; 5/4/17 133. Các thao tác trên con trỏVí dụ : ◦ char *a; ◦ short *b; ◦ long *c;Các con trỏ a, b, c lần lượt trỏ tới ô nhớ1000, 2000 và 3000.Cộng các con trỏ với một số nguyên: ◦a 5/4/17 14 = a + 1; //con trỏ a dời đi ? byte4. con trỏ Void (void pointer )Ví dụ:int a, *pa;float f, *pf;pa = &a; // hợp lệpf = &f; // hợp lệpa = &f; // không hợp lệ vì pa là con trỏ kiểu int nên chỉ chứa địa chỉ của biến kiểu intpf = &a; //không hợp lệ vì pf là con 5/4/17 154. con trỏ Void (void pointer)Con trỏ void là một lọai con trỏ đặc biệt mà có thể trỏ đến bất kỳ kiểu dữ liệu nào.Cú pháp:void *pointerVariable;Ví dụ: void *p; p = &a; // con trỏ p trỏ đến biến nguyên 5/4/17 164. con trỏ Void (void pointer)Tùy thuộc con trỏ void đang trỏ đến kiểu dữ liệu nào, ta phải ép về đúng kiểu tương ứng khi dùng trong các biểu thứcVí dụ:Nếu p đang trỏ đến biến nguyên a, để tăng giá trị của biến a lên 10 ta phải dùng lệnh sau: *(int*)p + 10; 5/4/17 175. Mảng & con trỏGiữa mảng và con trỏ có 1 mối quan hệ tương quan. Tên của 1 mảng có thể được xem như là 1 con trỏ. ◦ int b[ 5 ]; // khai báo 1 mảng kiểu int 5 phần tử ◦ int *bPtr; // khai báo 1 con trỏ trỏ đến kiểu intTên của một mảng tương ứng 1 con trỏ trỏ đến phần tử đầu tiên trong mảng. ◦ bPtr = b; // gán địa chỉ của mảng b cho con 5/4/17 185. Mảng con trỏ#include #include void main (){int numbers[5], * p;p = numbers; *p = 10;p++; *p = 20;p = &numbers[2]; *p = 30;p = numbers + 3; *p = 40; 5/4/17 195. con trỏ null (null pointer )Một con trỏ hiện hành không trỏ đến một địa chỉ bộ nhớ hợp lệ thì được gán giá trị NULL.Nóicác khác, con trỏ NULL là con trỏ không trỏ đến đâu cả.NULL được định nghĩa trong Ví dụ: #include void main() 5/4/17 ...
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 5: Con trỏ (pointer)Chương 5: con trỏ (pointer) 5/4/17 1AgendaKhái niệm về con trỏToán tử con trỏThao tác trên con trỏCon trỏ voidCon trỏ nullMảng con trỏCấp phát bộ nhớ động 5/4/17 21. Khái niệm về con trỏCon trỏ là 1 biến chứa 1 địa chỉ bộ nhớ. Địa chỉ này là vị trí của 1 đối tượng khác (thường là 1 biến) trong bộ nhớ. 5/4/17 31. Khái niệm về con trỏGiống như tất cả các biến, con trỏ phải được khai báo trước khi sử dụng.Dạng tổng quát để khai báo 1 biến con type *pointerName; trỏ: ◦ type: Kiểu dữ liệu của biến mà con trỏ trỏ đến 5/4/17 42. Toán tử con trỏ (pointeroperation) con trỏ là * và &Có 2 toán tửToán tử &: là toán tử 1 ngôi trả về địa chỉ bộ nhớ của toán hạng của nó. &variableNameCú pháp:Ví dụ: 5/4/17 5 int y = 50; // Khai báo biến y2. Toán tử con trỏ (pointeroperation)int y = 50;int *yPtr;yPtr = &y; yPtr = ??? 5/4/17 62. Toán tử con trỏ (pointeroperation)là toán tử một ngôi trảToán tử * : về giá trị tại địa chỉ con trỏ trỏ đếnCú pháp: *pointerNameVí dụ: int y = 50; // Khai báo biến y int *yPtr; // Khai báo con trỏ yPtr 5/4/17 7 cout 2. Toán tử con trỏ (pointeroperation)Ví dụ 1: #include int main() { int a; int *aPtr; // aPtr is an int * -- pointer to an integer a = 7; aPtr = &a; cout 2. Toán tử con trỏ (pointer operation)Ví dụ 2:#include int main (){ int firstvalue, secondvalue; int * mypointer; mypointer = &firstvalue; *mypointer = 20; mypointer = &secondvalue; *mypointer = 10; cout 2. Toán tử con trỏ (pointeroperation)Ví dụ 3:#include void main (){ int firstvalue = 5, secondvalue = 15; int * p1, * p2; p1 = &firstvalue; p2 = &secondvalue; *p1 = 10;// value pointed by p1 = 10 *p2 = *p1; p1 = p2; //value of pointer is copied *p1 = 20; // value pointed by p1 = 20 cout 3. Các thao tác trên con trỏLệnhgáncontrỏ:dùngphép gánđểgángiátrịcủamộtcon trỏchomộtcontrỏkháccócùng kiểuVí dụ: int x; int *p1, *p2; p1 = &x; p2 = p1; 5/4/17 11Sau khi đọan lệnh trên được thực3. Các thao tác trên con trỏPhép toán số học trên con trỏ: Chỉ có 2 phép toán sử dụng trên con trỏ là phép cộng và phép trừ. 5/4/17 123. Các thao tác trên con trỏTất cả con trỏ sẽ tăng hay giảm với đơn vị là kích thước của kiểu dữ liệu của nó.char *ch;int *i;ch = ch + 3; ch = ???i = i + 2; 5/4/17 133. Các thao tác trên con trỏVí dụ : ◦ char *a; ◦ short *b; ◦ long *c;Các con trỏ a, b, c lần lượt trỏ tới ô nhớ1000, 2000 và 3000.Cộng các con trỏ với một số nguyên: ◦a 5/4/17 14 = a + 1; //con trỏ a dời đi ? byte4. con trỏ Void (void pointer )Ví dụ:int a, *pa;float f, *pf;pa = &a; // hợp lệpf = &f; // hợp lệpa = &f; // không hợp lệ vì pa là con trỏ kiểu int nên chỉ chứa địa chỉ của biến kiểu intpf = &a; //không hợp lệ vì pf là con 5/4/17 154. con trỏ Void (void pointer)Con trỏ void là một lọai con trỏ đặc biệt mà có thể trỏ đến bất kỳ kiểu dữ liệu nào.Cú pháp:void *pointerVariable;Ví dụ: void *p; p = &a; // con trỏ p trỏ đến biến nguyên 5/4/17 164. con trỏ Void (void pointer)Tùy thuộc con trỏ void đang trỏ đến kiểu dữ liệu nào, ta phải ép về đúng kiểu tương ứng khi dùng trong các biểu thứcVí dụ:Nếu p đang trỏ đến biến nguyên a, để tăng giá trị của biến a lên 10 ta phải dùng lệnh sau: *(int*)p + 10; 5/4/17 175. Mảng & con trỏGiữa mảng và con trỏ có 1 mối quan hệ tương quan. Tên của 1 mảng có thể được xem như là 1 con trỏ. ◦ int b[ 5 ]; // khai báo 1 mảng kiểu int 5 phần tử ◦ int *bPtr; // khai báo 1 con trỏ trỏ đến kiểu intTên của một mảng tương ứng 1 con trỏ trỏ đến phần tử đầu tiên trong mảng. ◦ bPtr = b; // gán địa chỉ của mảng b cho con 5/4/17 185. Mảng con trỏ#include #include void main (){int numbers[5], * p;p = numbers; *p = 10;p++; *p = 20;p = &numbers[2]; *p = 30;p = numbers + 3; *p = 40; 5/4/17 195. con trỏ null (null pointer )Một con trỏ hiện hành không trỏ đến một địa chỉ bộ nhớ hợp lệ thì được gán giá trị NULL.Nóicác khác, con trỏ NULL là con trỏ không trỏ đến đâu cả.NULL được định nghĩa trong Ví dụ: #include void main() 5/4/17 ...
Tìm kiếm theo từ khóa liên quan:
Kỹ thuật lập trình Bài giảng Kỹ thuật lập trình Phương pháp lập trình Toán tử con trỏ Con trỏ void Con trỏ nullGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 262 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 203 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 193 0 0 -
Giáo trình Lập trình logic trong prolog: Phần 1
114 trang 189 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 169 0 0 -
Giáo trình Lập trình C căn bản
135 trang 164 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 163 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 152 0 0 -
14 trang 133 0 0
-
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 118 0 0