Lập trình hướng đối tượng - Chương 5: Con trỏ (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ức
Ví 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;
Nếu p đang trỏ đến biến thực f, để tăng giá trị của biến f lên 10 ta phải dủng lệnh sau:
*(float*)p + 10;
25 trang |
Chia sẻ: huyhoang44 | Lượt xem: 723 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Lập trình hướng đối tượng - Chương 5: Con trỏ (pointer), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 5: con trỏ (pointer)3/29/20201AgendaKhá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ớ động3/29/202021. 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ớ.3/29/202031. 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 trỏ:type: Kiểu dữ liệu của biến mà con trỏ trỏ đếnVí dụ: int *countPtr, count;3/29/20204type *pointerName;2. Toán tử con trỏ (pointer operation)Có 2 toán tử con trỏ là * và &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ó.Cú pháp: Ví dụ: int y = 50; // Khai báo biến y int *yPtr; // Khai báo con trỏ yPtr yPtr = &y; // gán địa chỉ của y cho yPtr3/29/20205&variableName2. Toán tử con trỏ (pointer operation)int y = 50; int *yPtr; yPtr = &y; yPtr = ???3/29/202062. Toán tử con trỏ (pointer operation)Toán tử * : là toán tử một ngôi trả về giá trị tại địa chỉ con trỏ trỏ đến Cú pháp: Ví dụ: int y = 50; // Khai báo biến y int *yPtr; // Khai báo con trỏ yPtr cout int main(){ int a; int *aPtr; // aPtr is an int * -- pointer to an integer a = 7; aPtr = &a; cout int main () { int firstvalue, secondvalue; int * mypointer; mypointer = &firstvalue; *mypointer = 20; mypointer = &secondvalue; *mypointer = 10; cout 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 #include void main (){int numbers[5], * p;p = numbers; *p = 10;p++; *p = 20;p = &numbers[2]; *p = 30;p = numbers + 3; *p = 40;p = numbers; *(p+4) = 50;for (int n=0; nVí dụ: #include void main() { int* p; cout #include int main() { int *p; p = new int; // allocate space for an int *p = 100; cout << "At " << p << " "; cout << "is the value " << *p << "\n"; delete p; return 0;}3/29/2020237. Mảng con trỏMỗi biến con trỏ là một biến đơn. Ta có thể tạo mảng của các con trỏ với mỗi phần tử của mảng là một con trỏ.Cú pháp:type: kiểu dữ liệu mà các con trỏ phần tử trỏ đến.pointerArray: tên mảng con trỏ.elements: số phần tử của mảng con trỏ3/29/202024type *pointerArray[elements];7. Mảng con trỏint *p[5]; int a=6;p[0] = &a;p[2] = p[0];int b;b = *p[0];3/29/202025
Các file đính kèm theo tài liệu này:
- chuong_5_6472.pptx