Con trỏ và mảng
Bài học 6 trên 14 trong khóa học Con trỏ trong C++ của Coddy.
Bây giờ bạn đã tìm hiểu về con trỏ hằng và con trỏ đến hằng số, đồng thời biết sự khác nhau giữa chúng, ta có thể chuyển sang mối liên hệ giữa con trỏ và mảng.
Khi khai báo một mảng, tên mảng thực chất là một con trỏ hằng đến một giá trị không phải hằng số. Vì vậy, địa chỉ mà con trỏ trỏ đến là hằng số và không thể thay đổi, còn giá trị mà nó lưu giữ thì có thể thay đổi.
Nếu ta có int list[10];, thì list thực chất là int * const, và list có cùng giá trị với &list[0]
int list[] = {10, 20, 30, 40, 50};
cout << "First: " << *list << endl;
cout << "Third: " << *(list + 2) << endl;
int *ptr = list;
cout << "First again: " << *ptr;Output:
First: 10
Third: 30
First again: 10Như bạn thấy, ta có thể dùng tên mảng list làm con trỏ đến phần tử đầu tiên và thực hiện những việc cần thiết. Hạn chế duy nhất khi dùng chính con trỏ mảng là ta không thể thay đổi nó. Còn khi tạo một con trỏ ptr trỏ đến cùng vùng nhớ với list, sau đó ta có thể thay đổi vị trí của nó trong chương trình. Ví dụ:
int list[] = {10, 20, 30, 40, 50};
int *ptr = list;
for(int i = 0; i < 5; i++)
cout << *ptr++ << " ";Output:
10 20 30 40 50Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Thử thách
DễĐừng thay đổi bất kỳ code mặc định nào. Một mảng có tên numbers đã được tạo. Hãy dùng con trỏ numbers và phép giải tham chiếu để in ra tất cả phần tử chẵn trong mảng, cách nhau bằng khoảng trắng.
Tự làm thử
#include <iostream>
using namespace std;
int main() {
// KHÔNG THAY ĐỔI ĐOẠN CODE BÊN DƯỚI
int n, x;
cin >> n;
int numbers[n];
for(int i = 0; i < n; i++)
cin >> numbers[i];
// KHÔNG THAY ĐỔI ĐOẠN CODE BÊN TRÊN
// Viết code của bạn vào đây
return 0;
}Tất cả bài học trong Con trỏ trong C++
1Cơ bản về con trỏ
Giới thiệu về con trỏKhai báo và khởi tạoSố học: phép gánSố học: các phép toánCon trỏ hằngCon trỏ và mảngTự luyện tập: Trình biên dịch C++ online