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;

pptx25 trang | Chia sẻ: huyhoang44 | Lượt xem: 723 | Lượt tải: 0download
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:

  • pptxchuong_5_6472.pptx