Bài giảng Con trỏ và quản lý bộ nhớ động - Hoàng Thân Anh Tuấn
Số trang: 11
Loại file: ppt
Dung lượng: 222.00 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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.
Nội dung trích xuất từ tài liệu:
Bài giảng Con trỏ và quản lý bộ nhớ động - Hoàng Thân Anh TuấnCon 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 TPHCMNộ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 độngTổ 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 ứngVí 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 DataBiế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 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.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;
Nội dung trích xuất từ tài liệu:
Bài giảng Con trỏ và quản lý bộ nhớ động - Hoàng Thân Anh TuấnCon 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 TPHCMNộ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 độngTổ 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 ứngVí 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 DataBiế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 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.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;
Tìm kiếm theo từ khóa liên quan:
Bài giảng Con trỏ Quản lý bộ nhớ động Biến con trỏ Thao tác trên biến con trỏ Hủy biến động Cấp phát biến độngTài liệu liên quan:
-
124 trang 114 3 0
-
Giáo trình Ngôn ngữ lập trình 2
50 trang 108 0 0 -
Bài giảng Lập trình cơ bản: Bài 6 - Chu Thị Hường
38 trang 33 0 0 -
Bài giảng chương 3: Danh sách liên kết
19 trang 25 0 0 -
97 trang 25 0 0
-
Bài giảng Lập trình: Chương 3 - Vũ Song Tùng
98 trang 21 0 0 -
Bài giảng Cấu trúc dữliệu và giải thuật: Ôn tập - Đậu Ngọc Hà Dương
44 trang 20 0 0 -
Ngôn ngữ lập trình C++: Phần 1
209 trang 20 0 0 -
96 trang 20 0 0
-
Bài giảng Phương pháp lập trình: Chương 7
16 trang 20 0 0