1. Trang chủ
  2. » Tất cả

IT001 – NHẬP MÔN LẬP TRÌNH Con trỏ phần 1

58 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 1,36 MB

Nội dung

CON TRỎ POINTER CĐR buổi học • Sau học xong buổi học, sinh viên có khả năng: • • • Hiểu khái niệm trỏ, địa biến quản lý biến C++ Sử dụng trỏ lập trình Biết số thuật ngữ tiếng Anh tương ứng Bảng thuật ngữ Việt- Anh liên quan nội dung trỏ Thuật ngữ tiếng Việt Thuật ngữ tiếng Anh Con trỏ Pointer Hằng trỏ Constant pointer Địa nhớ Memory Address Toán tử & Address-of Operator Toán tử * Dereferencing Operator, or: Indirection Operator Cấp phát nhớ Memory Allocation Giải phóng nhớ De-Allocate Memory Cấp phát tĩnh Static Memory Allocation Cấp phát động Dynamic Memory Allocation Biến động Dynamic Variable Phép toán số học trỏ Pointer Arithmetic NMLT - CON TRỎ CƠ BẢN Nội dung Khái niệm cách sử dụng trỏ Con trỏ mảng chiều Bài tập NMLT - Con trỏ cấp phát động Khái niệm cách sử dụng 1.1 Biến vùng nhớ 1.2 Khái niệm trỏ 1.3 Khai báo trỏ 1.4 Con trỏ toán tử &, * 1.5 Con trỏ NULL 1.6 Kích cỡ trỏ 1.7 Từ khóa const trỏ 1.8 Con trỏ hàm Bài tập Một số lưu ý NMLT - CON TRỎ CƠ BẢN ? Chương trình C/C++ quản lý biến nào? NMLT - CON TRỎ CƠ BẢN 1.1 Biến vùng nhớ • Bộ nhớ máy tính • Bộ nhớ RAM chứa nhiều ô nhớ, nhớ có kích thước byte • Mỗi nhớ có địa địa đánh số từ trở • RAM để lưu trữ mã chương trình liệu suốt q trình thực thi Địa nhớ … byte Memory Layout (bytes) NMLT - CON TRỎ CƠ BẢN 1.1 Biến vùng nhớ • Khi khai báo biến, máy tính dành riêng vùng nhớ để lưu biến • Khi tên biến gọi, máy tính thực bước sau: • Tìm kiếm địa nhớ biến • Truy xuất thiết lập giá trị biến lưu trữ nhớ • Ví dụ: NMLT - CON TRỎ CƠ BẢN 1.1 Biến vùng nhớ Địa ô nhớ int main() { char ch=‘x’; int a = 7; } NMLT - CON TRỎ CƠ BẢN ch x a 7 … Memory Layout (bytes) Toán tử & * • Toán tử & (Address-of Operator) đặt trước tên biến cho biết địa vùng nhớ biến • Toán tử * (Dereferencing Operator hay Indirection Operator) đặt trước địa cho biết giá trị lưu trữ địa • Ví dụ: NMLT - CON TRỎ CƠ BẢN 10 2.3 Các phép toán số học trỏ 0x10 0x14 0x18 0x22 0x26 0x30 arr int *p1 = &arr[1] p2 – p1 = p1 – p2 = -4 int *p2 = &arr[5] Memory Layout NMLT - CON TRỎ CƠ BẢN 44 2.4 Con trỏ mảng chiều int arr[6] = {5, 6, 9, 4, 1, 2}; int *parr;  Xét đoạn code sau: 0x10 // Cách 0x14 0x18 parr = arr; // Cách parr = &arr[0]; arr 0x90 0x10 parr 0x22 0x26 0x30 Memory Layout NMLT - CON TRỎ CƠ BẢN 45 2.4 Con trỏ mảng chiều • Truy xuất tới giá trị phần tử thứ i mảng (xét i số hợp lệ mảng): arr[i] == *(arr+i) == parr[i] == *(parr + i) • Truy xuất tới địa phần tử thứ i mảng (xét i số hợp lệ mảng): &arr[i] == arr+i == &parr[i] == parr + i NMLT - CON TRỎ CƠ BẢN 46 2.4 Con trỏ mảng chiều 0x10 arr[0] = parr[0] = *(parr+0) 0x14 arr[1] = parr[1] = *(parr+1) 0x18 arr[2] = parr[2] = *(parr+2) 0x22 arr[3] = parr[3] = *(parr+3) 0x26 arr[4] = parr[4] = *(parr+4) 0x30 arr[5] = parr[5] = *(parr+5) Memory Layout NMLT - CON TRỎ CƠ BẢN 47 2.5 Truyền mảng chiều cho hàm • Xét đoạn chương trình sau Tìm lỗi sai giải thích ĐÚNG SAI int main() { int a[] = {1,2,3,4,5,6}; for (int i = 0; i *(p + i); } for (int i = 0; i < n; i++) {// câu b cout

Ngày đăng: 25/02/2023, 14:52

w