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
lượt xem 7
download
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;...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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 4 Ví 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át z Để 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 8 Con trỏ và mảng một chiều Con trỏ và mảng hai chiều z 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 10 Mảng con trỏ z Khai báo: { *[]; z Ví dụ: Hàm int *a[10]; // Mảng 10 con trỏ số nguyên z Ví dụ: khai báo tham số của hàm main: main(argc, argv) int argc; char *argv[]; 11 12 2
- Khái niệm về hàm Đặc trưng của hàm z Nằm trong hoặc ngoài văn bản có chương z Hàm là một chương trình con trình gọi đến hàm. Trong một văn bản có z Hàm có thể nhận hoặc không nhận đối số thể chứa nhiều hàm, z Hàm có thể trả lại kết quả hoặc không z Được gọi từ chương trình chính (main), từ z Một chương trình C chứa ít nhất một hàm hàm khác hoặc từ chính nó (đệ quy), (main) và có thể có nhiều hàm khác z Không lồng nhau. z Hàm giúp cho việc phân đoạn chương z Có 3 cách truyền giá trị: Truyền theo tham trình thành những môđun độc lập trị, tham biến và tham trỏ. 13 14 Khai báo hàm Định nghĩa hàm z Khai báo hàm: (danh sách tham đối hình thức) { { (d/s kiểu đối) ; khai báo cục bộ của hàm ; // chỉ dùng cho hàm này z Ví dụ: dãy lệnh của hàm ; {int myfunction(int, long); return (biểu thức trả về); // có thể nằm đâu đó trong dãy {int rand100() ; lệnh. {void showtext(char *); } {void nothing(); 15 16 Ví dụ Lời gọi hàm double luythua(float x, int n) (danh sách tham đối thực sự); { Ví dụ: int i ; // biến chỉ số Viết và thực hiện một chương trình đơn double kq = 1; // để lưu kết quả giản có sử dụng lời gọi hàm for (i=1; i
- Hàm với đối ngầm định Khai báo hàm trùng tên (Overlay) z Khai báo: int max(int a, int b) int max(double a, double b) (d1, …, dn, { { dnd1=gt1, …, dndm=gtm); return (a > b) ? a: b ; return (a > b) ? a: b ; z Các đối ngầm định phải được khai báo } } liên tục và nằm ở cuối danh sách đối z Ví dụ: {int function(int, char, int=0, float=1.0); {int=0 và float=1.0 chỉ ra hai đối với giá trị ngầm định 19 20 Biến tham chiếu Các cách truyền đối cho hàm z Truyền theo tham trị Biến tham chiếu int i; z Truyền theo tham chiếu int &j=i; // j là một cách tham chiếu khác z Truyền theo con trỏ // của biến i j = 5; // Sau lệnh gán này i cũng có giá trị 5 Biến tham chiếu phải được khởi tạo khi khai báo 21 22 Truyền theo tham trị Truyền theo tham trỏ void swap1(int x, int y) void swap2(int *x, int *y) { { int t ; t = x ; x = y ; y = t ; int t ; t = *x ; *x = *y ; *y = t ; } } main() main() { { int x=5, y=6; int x=5, y=6; cout
- Truyền theo tham chiếu Tham trị Tham chiếu Tham trỏ void swap3(int &x, int &y) { Khai void swap(int x, void swap(int &x, void swap(int *x, int t ; t = x ; x = y ; y = t ; báo int y) int &y) int *y) } đối main() Câu lệnh t = x; x = y; y = t; t = x; x = y; y = t; t = *x; *x = *y; { *y = t; int x=5, y=6; cout
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Ngôn ngữ lập trình C++: Chương 1 - Trần Minh Châu
17 p | 251 | 54
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 8 - Vòng lặp xác định for và không xác định repeat và while
16 p | 110 | 9
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - TS. Nguyễn Thị Hiền
12 p | 63 | 9
-
Bài giảng Ngôn ngữ lập trình C - Chương 1: Giới thiệu ngôn ngữ C
4 p | 104 | 8
-
Bài giảng Ngôn ngữ lập trình Pascal: Chương 13 - Kiểu dữ liệu có cấu trúc - Kiểu bản ghi (Record)
15 p | 90 | 8
-
Bài giảng Ngôn ngữ lập trình C - Chương 4: Biểu thức
11 p | 93 | 7
-
Bài giảng Ngôn ngữ lập trình C và C++ (Phần 2: Ngôn ngữ lập trình C++) - Chương 5: Các lớp nhập/xuất trong C++
19 p | 132 | 7
-
Bài giảng Ngôn ngữ lập trình C: Chương 1 - PhD. Nguyễn Thị Huyền
12 p | 56 | 7
-
Bài giảng Ngôn ngữ lập trình C: Giới thiệu môn học - PhD. Nguyễn Thị Huyền
7 p | 58 | 7
-
Bài giảng Ngôn ngữ lập trình C - Chương 9: File
10 p | 81 | 6
-
Bài giảng Ngôn ngữ lập trình C++: Chương 3 - Lưu Mạnh Sơn
12 p | 46 | 5
-
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 1) – Nguyễn Hải Châu
7 p | 143 | 5
-
Bài giảng Ngôn ngữ lập trình C++: Chương 2 - Lưu Mạnh Sơn
11 p | 40 | 4
-
Bài giảng Ngôn ngữ lập trình Java: Chương 5 - ĐH Giao thông Vận tải
9 p | 85 | 3
-
Bài giảng Ngôn ngữ lập trình Java: Chương 6 - ĐH Giao thông Vận tải
15 p | 72 | 3
-
Bài giảng Ngôn ngữ lập trình: Bài 0 - Lý Anh Tuấn
4 p | 109 | 3
-
Bài giảng Ngôn ngữ lập trình: Tổng quan môn học
6 p | 89 | 3
-
Bài giảng Ngôn ngữ lập trình C: Giới thiệu môn học - TS. Nguyễn Thị Hiền
7 p | 52 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn