Danh mục

Bài giảng Kỹ thuật lập trình - Chương 6: Con trỏ

Số trang: 56      Loại file: pdf      Dung lượng: 489.68 KB      Lượt xem: 12      Lượt tải: 0    
10.10.2023

Phí tải xuống: 23,000 VND Tải xuống file đầy đủ (56 trang) 0
Xem trước 6 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Kỹ thuật lập trình - Chương 6: Con trỏ, cung cấp cho người học những kiến thức như: Con trỏ và cú pháp khai báo; Các phép toán trên biến con trỏ; Con trỏ và hàm; Con trỏ và dữ liệu kiểu mảng, xâu ký tự, cấu trúc; Cấp phát bộ nhớ động. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 6: Con trỏ BÀI GIẢNG HỌC PHẦNKỸ THUẬT LẬP TRÌNH CHƯƠNG 6: CON TRỎ Nội dung6.1. Con trỏ và cú pháp khai báo6.2. Các phép toán trên biến con trỏ6.3. Con trỏ và hàm6.4. Con trỏ và dữ liệu kiểu mảng, xâu ký tự, cấu trúc6.5. Cấp phát bộ nhớ động 2 6.1. Con trỏ và cú pháp khai báo• Khái niệm• Cú pháp khai báo• Con trỏ kiểu void 3 Khái niệm• Kiểu con trỏ là kiểu dữ liệu dùng để chứa địa chỉ• Biến con trỏ (gọi tắt là con trỏ) dùng để chứa địa chỉ của một đối tượng (biến hoặc hàm)• Con trỏ thường được dùng trong các trường hợp: - Trả về nhiều giá trị từ hàm (thông qua cơ chế truyền tham số theo địa chỉ trong hàm) - Truyền mảng và xâu ký tự giữa các hàm - Tạo các cấu trúc dữ liệu phức tạp (danh sách liên kết, cây nhị phân, …) 4 Cú pháp khai báo (1)• Cú pháp: kiểu_dữ_liệu *tên_con_trỏ; Ví dụ: int x,y,*px,*py;x, y là các biến nguyênpx, py là các con trỏ kiểu int (cấp phát các vùng nhớ có tên là px, py dùng để lưu địa chỉ của các đối tượng kiểu int)*px là nội dung của px (giá trị của đối tượng mà px lưu địa chỉ)*py là nội dung của py (giá trị của đối tượng mà py lưu địa chỉ) 5 Cú pháp khai báo (2) Khi sử dụng các lệnh: px = &x; //gán địa chỉ của biến x cho con trỏ px py = &y; //gán địa chỉ của biến y cho con trỏ py ta nói: px trỏ tới x và py trỏ tới y *px tương đương với x, *py tương đương với y 6 Ví dụ (1)• Khai báo: int x = 4,y = 5,*px,*py; Địa chỉ Nội Địa chỉ NộiBiến Biến vùng nhớ dung vùng nhớ dung x 1201 px 2010 4 1202 2011 1203 2012 1204 2013 y 1205 py 2014 5 1206 2015 1207 2016 7 Ví dụ (2)• Thực hiện các lệnh gán: px = &x; py = &y; Địa chỉ Nội Địa chỉ NộiBiến Biến vùng nhớ dung vùng nhớ dung x 1201 px 2010 4 1201 1202 2011 1203 2012 1204 2013 y 1205 py 2014 5 1205 1206 2015 1207 2016 8 Ví dụ (3)• Thực hiện các lệnh gán: *px += 10; *py += 10; Địa chỉ Nội Địa chỉ NộiBiến Biến vùng nhớ dung vùng nhớ dung x 1201 px 2010 14 1201 1202 2011 1203 2012 1204 2013 y 1205 py 2014 15 1205 1206 2015 1207 2016 9 Con trỏ kiểu void• Là dạng con trỏ đặc biệt (con trỏ không kiểu), có thể nhận bất kỳ địa chỉ kiểu nào• Cú pháp khai báo: void *tên_con_trỏ; Ví dụ: void *p; float a[20][30]; p=a;• Con trỏ void thường được dùng làm tham số để nhận bất kỳ địa chỉ kiểu nào từ tham số thực. Khi đó, trong thân hàm phải sử dụng phép ép kiểu để chuyển sang dạng địa chỉ cần xử lý 10 6.2. Các phép toán trên biến con trỏ (1) Có 4 phép toán cơ bản: Phép gán, phép tăng/giảm địa chỉ, phép truy nhập bộ nhớ, phép so sánh• Phép gán giá trị:- Các con trỏ phải cùng kiểu, muốn gán các con trỏ khác kiểu nên dùng phép ép kiểu Ví dụ: int x; char *p; p = (char*)(&x); 11 6.2. Các phép toán trên biến con trỏ (2)• Phép tăng/giảm địa chỉ:- Ví dụ 1: float x[30],*p; p = &x[10];//p trỏ tới x[10] Giá trị kiểu float lưu trong 4 byte  các phép tăng/giảm địa chỉ được thực hiện trên 4 bytep+i trỏ tới x[10+i], p-i trỏ tới x[10-i]- Ví dụ 2: float y[20][30]; y là một mảng gồm các dòng có 30 phần tử thực Kiểu địa chỉ của y là 30*4 = 120 bytey trỏ tới đầu dòng thứ nhất y[0][0]y+1 trỏ tới đầu dòng thứ hai y[1][0] … ...

Tài liệu được xem nhiều: