1 Ngơn ngữ lập trình C++ Chương – Con trỏ Xâu ký tự © 2004 Trần Minh Châu FOTECH VNU Chương Chương – Con trỏ Xâu ký tự Đề mục 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 Giới thiệu Khai báo khởi tạo biến trỏ Các thao tác trỏ Gọi hàm tham chiếu Sử dụng const với trỏ Sắp xếp bọt sử dụng Pass-by-Reference Các phép toán trỏ Quan hệ trỏ mảng Mảng trỏ Ví dụ: giả lập tráo chia Con trỏ tới hàm Giới thiệu xử lý ký tự xâu 5.12.1 Tổng quát ký tự xâu 5.12.2 Các hàm xử lý xâu © 2004 Trần Minh Châu FOTECH VNU Chương 5.1 Giới thiệu • Con trỏ (Pointer) – Mạnh, khó làm chủ – Có tác dụng truyền tham chiếu (pass-by-reference) – Có liên quan chặt chẽ đến mảng xâu • Biến trỏ (Pointer variable) – Chứa địa vùng nhớ thay chứa giá trị – Thơng thường, biến chứa giá trị (tham chiếu trực tiếp) – Con trỏ chứa địa biến mang giá trị countPtr cụ thể (tham chiếu gián tiếp) © 2004 Trần Minh Châu FOTECH VNU count count Chương 5.2 Khai báo khởi tạo biến trỏ • Khai báo trỏ – * cho biết biến trỏ int *myPtr; liệu kiểu int có địa myPtr, trỏ kiểu int * – Mỗi trỏ cần dấu int *myPtr1, *myPtr2; – Có thể khai báo trỏ tới kiểu liệu • Khởi tạo trỏ (Pointer initialization) – Khởi tạo 0, NULL, địa • NULL khơng trỏ đến đâu © 2004 Trần Minh Châu FOTECH VNU Chương 5.3 Các thao tác trỏ • & Tốn tử địa (address operator) – Trả địa vùng nhớ tốn hạng – Ví dụ int y = 5; int *yPtr; yPtr = &y; // yPtr chứa địa y – yPtr “trỏ đến” y yPtr y y yptr 12FEA8 12FED4 12FED4 địa y giá trị yptr © 2004 Trần Minh Châu FOTECH VNU Chương 5.3 Các thao tác trỏ • * phép thâm nhập (indirection/dereferencing) – Trả đối tượng mà trỏ trỏ tới – *yPtr trả y (vì yPtr trỏ đến y) – trỏ bị thâm nhập (dereferenced) giá trị trái (lvalue) *yptr = 9; // assigns to y ã * v & ngc â 2004 Trn Minh Châu FOTECH VNU Chương // Fig 5.4: fig05_04.cpp // Using the & and * operators #include using std::cout; using std::endl; 10 11 int main() { int a; int *aPtr; 12 13 14 a = 7; aPtr = &a; 15 16 17 cout