Chương 3: Mảng và con trỏ
lượt xem 49
download
Mảng (Array): Là một tập các vị trí nhớ liên tiếp nhau. Các phần tử trong mảng có cùng tên và cùng kiểu. Truy nhập tới phần tử trong mảng: Xác định thông qua tên mảng và chỉ số: arrayname[ position number ]. Phần tử đầu tiên ở vị trí thứ 0.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương 3: Mảng và con trỏ
- CHƯƠNG 3: Mảng và con trỏ
- 1. Mảng Mảng (Array) Là một tập các vị trí nhớ liên tiếp nhau Các phần tử trong mảng có cùng tên và cùng kiểu. Truy nhập tới phần tử trong mảng Xác định thông qua tên mảng và chỉ số: arrayname[ position number ] Phần tử đầu tiên ở vị trí thứ 0
- Khai báo mảng type arrayName[ arraySize ]; int c[ 10 ]; // mảng c gồm 10 số nguyên float d[ 3284 ]; // mảng d gồm 3284 số thực Có thể khai báo nhiều mảng cùng kiểu int b[ 100 ], x[ 27 ];
- Khởi tạo mảng Sử dụng vòng lặp for: gán giá trị cho từng phần tử trong mảng. Sử dụng danh sách khởi tạo: int n[ 5 ] = { 1, 2, 3, 4, 5 }; Nếu không đủ giá trị khởi tạo thì những phần tử còn lại sẽ nhận giá trị mặc định. Nếu giá trị khởi tạo nhiều hơn kích thước mảng thì sẽ báo lỗi. Gán tất cả các phần tử với cùng một giá trị int n[ 5 ] = { 0 }; Nếu kích thước mảng không được khai báo thì danh sách khởi tạo sẽ xác định: int n[] = { 1, 2, 3, 4, 5 }; //Mảng n có 5 phần tử
- Tham số mảng Tham số mảng được biểu diễn bởi kiểu dữ liệu và kích thước của mảng void display(float [n][m]); Hàm có thể không cần biết kích thước của mảng nhưng phải biết kích thước của một phần tử trong mảng void myFunction(int n[]); void display(float [][m]); Khi gọi hàm, ta chỉ cần truyền tên mảng int myArray[ 24 ]; myFunction( myArray); Mảng được truyền theo kiểu truyền tham chiếu Hàm có thể chỉnh sửa dữ liệu của các phần tử trong mảng Tên mảng là địa chỉ của phần tử đầu tiên
- Ví dụ về tham số mảng #include using namespace std; void printarray (int arg[], int length) { for (int n=0; n
- Mảng nhiều chiều Mảng nhiều chiều được coi là mảng của mảng. Khai báo: double sales[2][2]; sales[1][0]=2.5; Khởi tạo: double sales[2][2]={{1.2,3.0},{1.0,2.3}};
- Xâu ký tự Là một mảng các ký tự Tất cả các xâu ký tự đều kết thúc với ký tự null ('\0') Ví dụ char string1[] = "hello"; Ký tự null được tự động bổ sung. string1 có 6 ký tự char string1[] = {'h', 'e', 'l', 'l','o', '\0’ };
- Kiểu dữ liệu string string là một lớp chuẩn trong C++ Các ký tự trong string được đánh từ 0 Khởi tạo một biến kiểu string như sau: string s1 (“Man”); string s2=“Beast”; string s3; Ta có thể sử dụng các tóan tử tóan học, logic … trên đối tượng string s3 = s1; s3 = “Neither” + s1 + “nor”; s3 += s2;
- string và toán tử >> Hàm getline(cin, string str): lưu thông tin từ luồng vào chuẩn đưa vào str. Ví dụ: string full_name; cout
- 2. Con trỏ Mỗi biến trong chương trình chiếm một vùng nhớ, ví dụ biến kiểu int chiếm 4 byte nhớ. Vị trí của vùng nhớ được gọi là địa chỉ của biến int i; Địa chỉ của i 0x1054 10101011 0x1055 00001111 0x1056 10001000 0x1057 11100011 char c; Địa chỉ của c 0x1058 00111011 short s; Địa chỉ của s 0x1059 10111100 0x1060 11001100
- Biến con trỏ Biến con trỏ là biến lưu giá trị của địa chỉ vùng nhớ. Mỗi kiểu dữ liệu có một biến con trỏ riêng: con trỏ kiểu int, con trỏ kiểu char… C++ sử dụng: Toán tử & để lấy địa chỉ của biến Toán tử * để lấy nội dung của biến được trỏ. Ví dụ: int i=17; int* ptr; // khai báo biến trỏ kiểu int ptr= &i; // gán địa chỉ của biến i cho con trỏ ptr cout
- Biến con trỏ … int i; 0x1054 17 int* ptr; Đị a ch ỉ ung N ội d ptr=&i; cout
- Biến con trỏ … int v; // khai báo biến v kiểu int int w; // khai báo biến w kiểu int int* p; // khai báo biến p kiểu con trỏ trỏ tới kiểu int p=&v; // gán địa chỉ của v cho con trỏ p v=3; // gán giá trị 3 cho v *p=7; // gán giá trị 7 cho v p=&w; // gán địa chỉ của w cho con trỏ p *p=12; // gán giá trị 12 cho w
- Con trỏ hằng Khai báo hằng: const int result = 5; // result là hằng result = 10; // sau đó gán lại giá trị thì C++ sẽ báo lỗi Khai báo con trỏ hằng: const char* answer_ptr = "FortyTwo"; // answer_ptr là con trỏ trỏ tới hằng kiểu char Dữ liệu được trỏ bởi con trỏ hằng thì không thể thay đổi nhưng con trỏ thì có thể. answer_ptr = "FiftyOne"; // đúng (answer_ptr là biến con trỏ) *answer_ptr = 'X'; // sai (*answer_ptr là hằng)
- Con trỏ hằng … Nếu khai báo: char *const nameptr = "Test"; //name_ptr là con trỏ hằng nameptr = "New"; // sai (name_ptr là hằng) *nameptr = 'B'; // đúng (*nameptr là char) Nếu khai báo như sau thì không thể thay đổi được cả con trỏ và nội dung của con trỏ: const char* const titleptr = "Title";
- Con trỏ và mảng Mảng có thể được truy nhập thông qua con trỏ. Tên mảng là một con trỏ hằng trỏ tới kiểu dữ liệu của các thành phần được lưu trữ trong mảng. int array[5] = { 23, 5, 12, 34, 17 }; // sử dụng chỉ số để truy nhập tới các phần tử của mảng for (int i=0; i< 5; i++) cout
- Ví dụ về: Con trỏ và mảng #include using namespace std; int main () { int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; n
- Con trỏ là tham số của hàm C++ cung cấp 3 cách truyền tham số: Truyền tham trị: void f(int x); Truyền tham chiếu: void f(int& x); Truyền con trỏ: void f(int* x);
- Con trỏ là tham số của hàm … void swap( double& x, double& y) { double tmp=x; x=y; y=tmp; } void swap( double* ptr1, double* ptr2) { double tmp=*ptr1; *ptr1=*ptr2; *ptr2=tmp; } double a=3.0; double b=5.0 swap(a,b); // gọi tham chiếu của biến a và b swap(&a, &b); // sử dụng địa chỉ của biến a và b
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Mạng silverlight - Chương 3: SỬ DỤNG SILVERLIGHT TRÊN EXPRESSION BLEND VÀ VISUAL STUDIO 2008
10 p | 153 | 34
-
Chương 3: Lớp và đối tượng (cont.)
19 p | 119 | 14
-
Giáo trình Lập trình C/C++ - CĐ Giao thông Vận tải TP.HCM
98 p | 61 | 12
-
Bài giảng Lập trình C nâng cao: Chương 3 - Trần Minh Thái
22 p | 84 | 9
-
Bài giảng Lập trình hướng đối tượng: Chương 3 - GV. Hà Văn Sang
51 p | 118 | 7
-
Bài giảng Ngôn ngữ lập trình C: Chương 3 - PhD. Nguyễn Thị Huyền
31 p | 63 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 3 - GV. Nguyễn Minh Thành
36 p | 89 | 6
-
Giáo trình Kỹ thuật lập trình: Phần 1
178 p | 13 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 3 (phần 1) - Võ Quang Hoàng Khang
39 p | 55 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 3 (phần 2) - Võ Quang Hoàng Khang
25 p | 72 | 3
-
Bài giảng Ngôn ngữ lập trình C: Chương 3 - TS. Nguyễn Thị Hiền
31 p | 54 | 3
-
Bài giảng Tin học đại cương (Phần 3: Lập trình C): Chương 5 - Viện Công nghệ Thông tin & Truyền thông
107 p | 25 | 3
-
Bài giảng Tin học đại cương (Phần 3) - Chương 5: Mảng và xâu ký tự
63 p | 30 | 3
-
Bài giảng Tin học căn bản (Phần 3): Chương 4 - Ngô Văn Linh
53 p | 45 | 2
-
Bài giảng Cấu trúc dữ liệu 1: Chương 3A - Huỳnh Cao Thế Cường
22 p | 49 | 2
-
Bài giảng Ngôn ngữ lập trình Fortran 90 - Phan Văn Tân
233 p | 29 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 (phần 3) - Võ Quang Hoàng Khang
31 p | 90 | 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