
Bài giảng Kỹ thuật lập trình - Chương 6: Con trỏ
Thông tin tài liệu:
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ênpx, 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 bytep+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 bytey 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ìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình Kỹ thuật lập trình Con trỏ Xâu ký tự Cú pháp khai báo Cấp phát bộ nhớ động Con trỏ kiểu voidTài liệu có liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 306 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 246 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 222 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 188 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 159 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 126 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 119 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 115 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 113 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 110 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 1
246 trang 106 0 0 -
Giáo trình toán rời rạc - Phụ lục 2
15 trang 92 0 0 -
Nghiên cứu triển khai nội địa hóa máy tính thương hiệu Việt Nam
585 trang 87 0 0 -
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 86 0 0 -
Bài giảng Nhập môn lập trình - Chương 12: Quản lý bộ nhớ
23 trang 69 0 0 -
Giáo trình Ngôn ngữ lập trình C++: Phần 2 - TS. Vũ Việt Vũ
107 trang 67 0 0 -
Cách chia sẻ File, dữ liệu mạng Lan trong Windows Xp
10 trang 67 0 0 -
Luận văn: TÌM HIỂU KỸ THUẬT LẬP TRÌNH NETWORK SERVICE CHO WINDOW
39 trang 60 0 0 -
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 trang 58 0 0 -
Phân tích và thiết kế giải thuật: Các kỹ thuật thiết kế giải thuật - Chương 5
0 trang 55 0 0