Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 5, 6) – Nguyễn Hải Châu
Số trang: 5
Loại file: pdf
Dung lượng: 183.03 KB
Lượt xem: 18
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 tuần 5 và tuần 6 giúp người học tìm hiểu về con trỏ: Cách khai báo, sử dụng, cấp phát và giải phóng bộ nhớ; hiểu được mối liên quan giữa con trỏ và mảng; biết được cách khai báo, xây dựng và sử dụng hàm; phân biệt được các cách truyền đối khác nhau cho hàm; đối ngầm định, hàm trùng tên;...
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 5, 6) – Nguyễn Hải Châu Nội dung z Con trỏ và số học địa chỉ NGÔN NGỮ LẬP TRÌNH {Con trỏ C/C++ {Con trỏ và mảng z Hàm và chương trình Nguyễn Hải Châu {Khai báo và sử dụng hàm Khoa Công nghệ thông tin {Các cách truyền đối cho hàm Trường Đại học Công nghệ (Bài giảng tuần 5-6) 1 2 Khái niệm con trỏ z Con trỏ là một biến chứa địa chỉ của một biến khác, hoặc địa chỉ của một hàm Con trỏ và số học địa chỉ z Nếu p là con trỏ chứa địa chỉ của biến x ta gọi p trỏ tới x và x được trỏ bởi p z Để lấy địa chỉ của biến x, ta dùng phép toán &: &x z Để lấy nội dung của con trỏ, ta dùng phép toán *: *p 3 4Ví dụ về con trỏ, phép toán & và * Các phép toán với con trỏ z Phép toán * và & int a=2; // a là một biến integer z Phép toán gán: p = q; p và q là hai con trỏ int *p; // p là một con trỏ z Phép toán tăng giảm địa chỉ, tự tăng giảm {p+n, p-n p = &a; // p chứa địa chỉ của a {p++, p--, ++p, --p cout Cấp phát bộ nhớ cho con trỏ Giải phóng bộ nhớ đã cấp phátz Để cấp phát bộ nhớ cho con trỏ, ta dùng z Để cấp phát bộ nhớ cho con trỏ, ta dùng chỉ thị new: chỉ thị delete: p = new ; // cấp phát 1 phần tử delete p; // nếu p được cấp phát 1 phần tử delete[] p; // nếu p được cấp phát n>1 phần tử p = new [n] ; // cấp phát n phần tử z Ví dụ:z Ví dụ: int *p, *q; int *p, *q; p = new int; // Cấp phát 1 phần tử p = new int; // Cấp phát 1 phần tử q = new int[10]; // Cấp phát 10 phần tử q = new int[10]; // Cấp phát 10 phần tử delete p; // Giải phóng p delete[] q; // Giải phóng q 7 8Con trỏ và mảng một chiều Con trỏ và mảng hai chiềuz Con trỏ trỏ đến mảng cũng tương tự trỏ Ví dụ: đến các biến khác, tức gán địa chỉ của float a[2][3], *p; mảng (chính là tên mảng) cho con trỏ a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]z Địa chỉ của mảng là địa chỉ của thành a a+1 phần đầu tiến (0) nên a+i sẽ là địa chỉ thành phần thứ i của mảng p = a;z Giả sử có mảng int a[10]: a[i][j] ~ *(p+3*i+j) {a[i] chính là *(a+i) {a+i chính là &a[i] 9 10Mảng con trỏz Khai báo: { *[];z Ví dụ: Hàm int *a[10]; // Mảng 10 con trỏ số nguyênz Ví dụ: khai báo tham số của hàm main: main(argc, argv) int argc; char *argv[]; 11 12 2Khái niệm về hàm ...
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 5, 6) – Nguyễn Hải Châu Nội dung z Con trỏ và số học địa chỉ NGÔN NGỮ LẬP TRÌNH {Con trỏ C/C++ {Con trỏ và mảng z Hàm và chương trình Nguyễn Hải Châu {Khai báo và sử dụng hàm Khoa Công nghệ thông tin {Các cách truyền đối cho hàm Trường Đại học Công nghệ (Bài giảng tuần 5-6) 1 2 Khái niệm con trỏ z Con trỏ là một biến chứa địa chỉ của một biến khác, hoặc địa chỉ của một hàm Con trỏ và số học địa chỉ z Nếu p là con trỏ chứa địa chỉ của biến x ta gọi p trỏ tới x và x được trỏ bởi p z Để lấy địa chỉ của biến x, ta dùng phép toán &: &x z Để lấy nội dung của con trỏ, ta dùng phép toán *: *p 3 4Ví dụ về con trỏ, phép toán & và * Các phép toán với con trỏ z Phép toán * và & int a=2; // a là một biến integer z Phép toán gán: p = q; p và q là hai con trỏ int *p; // p là một con trỏ z Phép toán tăng giảm địa chỉ, tự tăng giảm {p+n, p-n p = &a; // p chứa địa chỉ của a {p++, p--, ++p, --p cout Cấp phát bộ nhớ cho con trỏ Giải phóng bộ nhớ đã cấp phátz Để cấp phát bộ nhớ cho con trỏ, ta dùng z Để cấp phát bộ nhớ cho con trỏ, ta dùng chỉ thị new: chỉ thị delete: p = new ; // cấp phát 1 phần tử delete p; // nếu p được cấp phát 1 phần tử delete[] p; // nếu p được cấp phát n>1 phần tử p = new [n] ; // cấp phát n phần tử z Ví dụ:z Ví dụ: int *p, *q; int *p, *q; p = new int; // Cấp phát 1 phần tử p = new int; // Cấp phát 1 phần tử q = new int[10]; // Cấp phát 10 phần tử q = new int[10]; // Cấp phát 10 phần tử delete p; // Giải phóng p delete[] q; // Giải phóng q 7 8Con trỏ và mảng một chiều Con trỏ và mảng hai chiềuz Con trỏ trỏ đến mảng cũng tương tự trỏ Ví dụ: đến các biến khác, tức gán địa chỉ của float a[2][3], *p; mảng (chính là tên mảng) cho con trỏ a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]z Địa chỉ của mảng là địa chỉ của thành a a+1 phần đầu tiến (0) nên a+i sẽ là địa chỉ thành phần thứ i của mảng p = a;z Giả sử có mảng int a[10]: a[i][j] ~ *(p+3*i+j) {a[i] chính là *(a+i) {a+i chính là &a[i] 9 10Mảng con trỏz Khai báo: { *[];z Ví dụ: Hàm int *a[10]; // Mảng 10 con trỏ số nguyênz Ví dụ: khai báo tham số của hàm main: main(argc, argv) int argc; char *argv[]; 11 12 2Khái niệm về hàm ...
Tìm kiếm theo từ khóa liên quan:
Ngôn ngữ lập trình C Bài giảng Ngôn ngữ lập trình Ngôn ngữ lập trình C++ Số học địa chỉ Khai báo mảng Đối ngầm địnhGợi ý tài liệu liên quan:
-
Giáo trình Cấu trúc dữ liệu và thuật toán trên C++
74 trang 359 0 0 -
46 trang 249 0 0
-
101 trang 198 1 0
-
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 189 0 0 -
Tài liệu học tập môn Tin cơ sở: Phần 1 - Phùng Thị Thu Hiền
100 trang 184 1 0 -
Tìm hiểu về ngôn ngữ lập trình C: Phần 1 - Quách Tuấn Ngọc
211 trang 149 0 0 -
51 trang 133 0 0
-
161 trang 129 1 0
-
Lý thuyết ngôn ngữ lập trình C++ dành cho sinh viên: Phần 2
276 trang 122 0 0 -
Giáo trình Vi điều khiển PIC: Phần 1
119 trang 116 0 0