intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Con trỏ và quản lý bộ nhớ động - Hoàng Thân Anh Tuấn

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PPT | Số trang:11

59
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Con trỏ và quản lý bộ nhớ động do Hoàng Thân Anh Tuấn biên soạn trình bày về tổ chức của chương trình; địa chỉ; biến con trỏ; các thao tác trên biến con trỏ; biến tĩnh và biến động; cấp phát và hủy biến động. Mời các bạn tham khảo bài giảng để hiểu rõ hơn về những nội dung này.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Con trỏ và quản lý bộ nhớ động - Hoàng Thân Anh Tuấn

  1. Con trỏ và quản lý bộ nhớ động Hoàng Thân Anh Tuấn Khoa Toán – Tin học Đại học Sư phạm TPHCM
  2. Nội dung  Tổ chức của chương trình  Địa chỉ  Biến con trỏ  Các thao tác trên biến con trỏ  Biến tĩnh và biến động  Cấp phát và hủy biến động
  3. Tổ chức của chương trình  Một chương trình được chia ra thành nhiều phân đoạn (segment).  Mỗi segment có thể xem như là một mảng một chiều.  Mỗi segment lưu một loại dữ liệu nhất định. – Data Segment: lưu các biến toàn cục – Stack Segment: lưu các biến cục bộ của các hàm và các thông tin khác – Heap Segment: lưu các biến động – Code Segment: lưu các chỉ thị đoạn mã của chương trình
  4. Địa chỉ  Một ô nhớ bất kỳ (một biến bất kỳ) trong chương trình có một địa chỉ duy nhất.  Mỗi địa chỉ gồm có hai thành phần: – Tên segment lưu biến – Vị trí của biến trong segment  Địa chỉ thường được ký hiệu là segment:offset – Segment có thể là Data, Heap, Code, Stack – Offset là vị trí của biến trong segment tương ứng
  5. Ví dụ int a; int main() { 16 16 int b; 12 12 double c; 8 c 8 … 4 4 return 0; 0 b 0 a } Stack Data
  6. Biến con trỏ  Là biến dùng để lưu giá trị địa chỉ  Cú pháp khai báo một biến con trỏ Kiểu* tên-biến; – Ý nghĩa: khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu đã chỉ ra. – Biến con trỏ có kích thước 4 bytes (hệ điều hành 32 bit)  Ví dụ: – int* pint; // khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu int. – double* p; // khai báo một biến con trỏ dùng để lưu địa chỉ của các biến thuộc kiểu double.
  7. Các thao tác trên con trỏ  Phép lấy địa chỉ: – Kí hiệu: & – Cú pháp: &tên-biến – Ý nghĩa: lấy địa chỉ của biến đi kèm. Biến được lấy địa chỉ phải thuộc kiểu mà con trỏ có thể lưu địa chỉ. – Ví dụ: int a = 5; int* pa = &a; // pa sẽ lưu địa chỉ của biến a
  8.  Phép khử địa chỉ – Kí hiệu: * – Cú pháp: *tên-biến-con-trỏ – Ý nghĩa: truy xuất đến vùng nhớ có địa chỉ đang được lưu bởi biến con trỏ đi kèm – Ví dụ: int a = 5; int* pa = &a; *pa = 6; cout
  9. Biến tĩnh và biến động Biến tĩnh Biến động Có tên Không có tên Kích thước cố định Kích thước không cố định Được cấp phát tự động trong Data Được cấp phát trong Heap Segment hoặc Stack Segment Segment Phạm vi sử dụng từ lúc khai báo Phạm vi sử dụng bắt đầu từ lúc đến hết khối gần nhất chứa nó. được tạo ra và kết thúc khi bị hủy. Tự động giải phóng khi hết phạm vi Không tự động giải phóng. Lập sử dụng trình viên phải lo việc này.
  10. Cấp phát biến động  Không có tên, chỉ có địa chỉ  dùng biến con trỏ để lưu địa chỉ.  Cú pháp: – Biến-con-trỏ = new Kiểu; – Biến-con-trỏ = new Kiểu[số phần tử];  Ví dụ: – int* p = new int; – double* pd = new double[10];
  11. Hủy biến động  Thông qua biến con trỏ lưu địa chỉ của biến động.  Cú pháp: – delete biến-con-trỏ; – Delete [] biến-con-trỏ;  Ví dụ: – delete p; – delete [] pd;
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
10=>1