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

Bài giảng Lập trình C++: Chương 5 - GV. Nguyễn Văn Hùng

Chia sẻ: Minh Minh | Ngày: | Loại File: PDF | Số trang:57

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

Bài giảng Lập trình C++ - Chương 5: Kiểu con trỏ và kiểu cấu trúc giúp người học nắm được các kiến thức về kiểu con trỏ và kiểu Cấu trúc như khái niệm, cách định nghĩa, khai báo biến con trỏ, biến cấu trúc, cách truy xuất dữ liệu bằng con trỏ và thao tác với từng thành phần của cấu trúc.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C++: Chương 5 - GV. Nguyễn Văn Hùng

  1. LẬP TRÌNH C++ (3 Tín chỉ) Gv: Nguyễn Văn Hùng Khoa: Khoa học máy tính Ngôn ngữ lập trình C++ 1/47
  2. CHƯƠNG 5: KIỂU CON TRỎ VÀ KIỂU CẤU TRÚC  Mục tiêu  Giới thiệu các kiến thức về kiểu Con trỏ và kiểu Cấu trúc: khái niệm, cách định nghĩa, khai báo biến con trỏ, biến cấu trúc, cách truy xuất dữ liệu bằng con trỏ và thao tác với từng thành phần của cấu trúc. Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 2/56
  3. CHƯƠNG 5: KIỂU CON TRỎ VÀ KIỂU CẤU TRÚC  Nội dung  Kiểu con trỏ  Kiểu cấu trúc  Cấu trúc tự trỏ  Mảng cấu trúc  Con trỏ và mảng  Mảng con trỏ Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 3/56
  4. 5.1 Kiểu Con trỏ - Địa chỉ và phép toán & - Khai báo biến con trỏ - Các phép toán trên con trỏ - Cấp phát và giải phóng bộ nhớ cho con trỏ Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 4/56
  5. Địa chỉ và phép toán & - Địa chỉ Là một đại lượng dùng để định vị (xác định) vị trí - Đối tượng muốn xác định ở đây là các biến và các phần tử (ô nhớ) chứa dữ liệu - Để xác định được địa chỉ của một đối tượng nào đó trong C++, ta sử dụng phép toán một ngôi lấy địa chỉ là “&” theo cú pháp: &Đốitượng \\ Dùng để xác định vị trí ô nhớ “Đốitượng” Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 5/56
  6. Địa chỉ và phép toán & Trường hợp, đối tượng là một biến, ta viết &Tenbien \\Lấy địa chỉ của biến Yêu cầu: Xác định địa chỉ của đối tượng nếu là mảng, chuỗi ký tự? Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 6/56
  7. Địa chỉ và phép toán & Ví dụ: string st="hello"; float a[]={5.0,4.0,3.0,2.0,1.0}; int i; char b[1]={'a'}; cout
  8. Khai báo biến con trỏ - Con trỏ là một biến chứa địa chỉ của biến khác. - Giả sử P là con trỏ chứa địa chỉ của biến x thì ta gọi p trỏ tới x hay x được trỏ bởi p. - Thông qua con trỏ, ta có thể làm việc được với nội dung của ô nhớ mà con trỏ trỏ đến. Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 8/56
  9. Khai báo biến con trỏ - Cú pháp: kiểu_dữ_liệu *tên_biến_con_trỏ; Trong đó: - Kiểu_dữ_liệu là kiểu dữ liệu của ô nhớ mà ta muốn con trỏ trỏ tới. - Dấu (*) nhằm báo cho trình biên dịch biết đang làm việc với kiểu dữ liệu là kiểu con trỏ - tên_biến_con_trỏ cũng được đặt theo quy tắc đặt tên => Khai báo con trỏ có tên tên_biến_con_trỏ trỏ tới ô nhớ chứa dữ liệu có kiểu_dữ_liệu Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 9/56
  10. Khai báo biến con trỏ - Sử dụng con trỏ Để con trỏ có tênbiếncontrỏ trỏ đến biến (ô nhớ) có kiểudữliệu ta cần phải gán con trỏ tênbiếncontrỏ cho địa chỉ của biến(ô nhớ) cần trỏ đến: tênbiếncontrỏ = địa chỉ của ô nhớ (biến) cần trỏ tới Lưu ý: Không thể gán một hằng địa chỉ cụ thể cho biếncontrỏ Để lấy nội dung ô nhớ mà con trỏ trỏ tới ta sử dụng phép toán *. Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 10/56
  11. Khai báo biến con trỏ Ví dụ: float a[]={5.2, 4.3, 3.1, 2.25, 1.0}; int i=9, *q; float *p, *p1; p=a; p1=&a[3]; cout
  12. Các phép toán trên con trỏ + Phép gán: - Gán con trỏ với địa chỉ một biến - Gán các con trỏ với nhau (phải cùng kiểu) Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 12/56
  13. Các phép toán trên con trỏ Ví dụ: int i=9, j=4, *p, *q; p=&i; q=&j; cout
  14. Các phép toán trên con trỏ + Phép tăng giảm địa chỉ: p+n: Con trỏ trỏ đến thành phần thứ n sau p p-n: Con trỏ trỏ đến thành phần thứ n trước p Một đơn vị tăng của con trỏ bằng kích thước của biến được trỏ. Chẳng hạn, biến có kiểu nguyên thì khi con trỏ tăng hay giảm một đơn vị tương đương với 2 bytes Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 14/56
  15. Các phép toán trên con trỏ Ví dụ: int a[5]={1, 2, 3, 4, 5}; int *p, i; p=a; cout
  16. Các phép toán trên con trỏ + Phép toán tự tăng, giảm: p++, p--, ++p, --p + Hiệu 2 con trỏ: p – q + Phép toán so sánh: =… Các phép toán này thường áp dụng cho các con trỏ trỏ đến các phần tử của cùng một mảng dữ liệu Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 16/56
  17. Cấp phát và giải phóng bộ nhớ cho con trỏ - Cấp phát bộ nhớ: sử dụng toán tử new + Cấp phát tĩnh + Cấp phát động Cú pháp: p = new kieugiatri; p = new kieugiatri[so_phan_tu] Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 17/56
  18. Cấp phát và giải phóng bộ nhớ cho con trỏ - Giải phóng bộ nhớ: sử dụng toán tử delete Cú pháp: delete p; delete[] p; Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 18/56
  19. Cấp phát và giải phóng bộ nhớ cho con trỏ Ví dụ: int *p; int *p; cout*p; cout
  20. Cấp phát và giải phóng bộ nhớ cho con trỏ Bài 1. Viết chương trình khai báo biến con trỏ kiểu nguyên. Sau đó, nhập vào một dãy gồm 10 số nguyên. Hiển thị dãy đó ra màn hình: - Theo thứ tự nhập vào - Theo thứ tự ngược lại Bài 2. Sử dụng con trỏ để nhập vào một dãy gồm n số thực. Sau đó: - Hiển thị dãy vừa nhập ra màn hình - Hiển thị dãy vừa nhập ra màn hình sau khi đã sắp xếp Ngôn ngữ Lập trình C ++ Chương 5: Kiểu con trỏ và kiểu cấu trúc 20/56
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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