Bài giảng Lập trình hướng đối tượng C++ - Chương 5: Mảng-Con trỏ-Tham chiếu

ppt 10 trang huongle 3530
Bạn đang xem tài liệu "Bài giảng Lập trình hướng đối tượng C++ - Chương 5: Mảng-Con trỏ-Tham chiếu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_lap_trinh_huong_doi_tuong_c_chuong_5_mang_con_tro.ppt

Nội dung text: Bài giảng Lập trình hướng đối tượng C++ - Chương 5: Mảng-Con trỏ-Tham chiếu

  1. CHƯƠNG 5: MẢNG - CON TRỎ - THAM CHIẾU Khoa Công Nghệ Thông Tin & Truyền Thông Đại Học Cần Thơ 1
  2. Chương 5 Mảng, Con Trỏ, Tham Chiếu ◼ Mục tiêu Giới thiệu các cách sử dụng mảng, con trỏ, và tham chiếu ◼ Nội dung Mảng một chiều, nhiều chiều, bộ nhớ tĩnh Con trỏ, tính toán con trỏ, bộ nhớ động Con trỏ hàm, tham chiếu 2
  3. Chương 5 Mảng ◼ Mảng (array) Gồm một tập các đối tượng cùng kiểu và được sắp xếp liên tiếp trong bộ nhớ Mỗi phần tử mảng được xác định bởi một chỉ số biểu thị vị trí của phần tử trong mảng ◼ Phần tử đầu tiên của mảng luôn có chỉ số 0 Số lượng phần tử trong mảng được gọi là kích thước của mảng (cố định; xác định trước) Gồm mảng một chiều và mảng đa chiều 3
  4. Chương 5 Biến Mảng ◼ Được định nghĩa bằng cách đặc tả kích thước mảng và kiểu các phần tử của nó Ví dụ: int heights[10]; ◼ Truy xuất 1 phần tử qua chỉ số mảng Ví dụ: heights[0]= 210; cout<< heights[3]; ◼ Truy xuất phần tử không tồn tại → lỗi vượt ngoài biên Ví dụ: cout<<heights[-1]; cout<<heights[10]; 4
  5. Chương 5 Bộ Khởi Tạo Mảng ◼ Mỗi mảng có một bộ khởi tạo mảng ◼ Ví dụ int nums[3] = {5, 10, 15}; Bộ khởi tạo mảng nums[2] = ? Kích thước int nums[3] = {5, 10}; int nums[ ] = {5, 10, 15}; mảng ? ◼ Chuỗi là một mảng ký tự ◼ Ví dụ: so sánh sự khác nhau của char str[] = "HELLO"; và char str[] = {'H', 'E', 'L', 'L', 'O'}; 5
  6. Chương 5 Mảng Đa Chiều Mùa xuân Mùa hè Mùa thu Mùa đông Sydney 26 34 22 17 Melbourne 24 32 19 13 int seasonTemp[3][4]; Brisbane 28 38 25 20 26 34 22 17 24 32 19 13 28 38 25 20 Firsthàng row đầu Secondhàng hairow Thirdhàng rowba Cách tổ chức trong bộ nhớ 6
  7. Chương 5 Con Trỏ ◼ Con trỏ đơn giản chỉ là địa chỉ của một vị trí bộ nhớ và cung cấp cách gián tiếp để truy xuất dữ liệu trong bộ nhớ ◼ Ví dụ it num = 10; num 10 1000 int *ptr1 = # ptr1 1000 2000 cout << *ptr1; 7
  8. Chương 5 Bộ Nhớ Động - Tĩnh ◼ Bộ nhớ động (heap)  Vùng nhớ được cấp phát động trong thời gian thực thi ◼ Bộ nhớ tính (stack)  Vùng nhớ được sử dụng để lưu trữ các biến toàn cục và lời gọi hàm ◼ Hai toán tử được sử dụng  new: cấp phát void Foo (void) {  delete: thu hồi int *ptr = new int; char *str = new char[10]; // delete ptr; delete [ ]str; } 8
  9. Chương 5 Tham Chiếu ◼ Một tham chiếu (reference) là một biệt hiệu (alias) cho một đối tượng. ◼ Ví dụ double num1 = 3.14; num1 3.14 1000 double &num2 = num1; num2 ◼ Ghi chú Một tham chiếu phải luôn được khởi tạo khi nó được định nghĩa Có thể khởi tạo tham chiếu tới một hằng 9
  10. Chương 5 Truyền Bằng Trị - Con Trỏ - Tham Chiếu // Truyền bằng trị (đối tượng) int main (void) 1 void Swap1 (int x, int y) { 2 { int i = 10, j = 20; 3 int temp = x; Swap1(i, j); cout << i << ", " << j << '\n'; 4 x = y; Swap2(&i, &j); cout << i << ", " << j << '\n'; 5 y = temp; Swap3(i, j); cout << i << ", " << j << '\n'; 6 } } // Truyền bằng địa chỉ (con trỏ) 7 void Swap2 (int *x, int *y) 8 { 9 int temp = *x; 10 *x = *y; 11 *y = temp; } 12 // Truyền bằng tham chiếu 13 void Swap3 (int &x, int &y) 14 { 15 int temp = x; 16 x = y; ? 17 y = temp; 18 } 10