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

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. | 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 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 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 Đị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 Ví dụ int a; int main() { int b; double c; return 0; } 16 12 8 c 4 0 b 16 12 8 4 0 a Stack Data 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. 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 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 << *pa; 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 Segment hoặc Stack Segment Được cấp phát trong Heap Segment Phạm vi sử dụng từ lúc khai báo đến hết khối gần nhất chứa nó. Phạm vi sử dụng bắt đầu từ lúc đượ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 sử dụng Không tự động giải phóng. Lập trình viên phải lo việc này. 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]; 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;

Không thể tạo bản xem trước, hãy bấm tải xuống
TỪ KHÓA LIÊN QUAN
TÀI LIỆU MỚI ĐĂNG
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.