Số học: các phép toán
Bài học 4 trên 14 trong khóa học Con trỏ trong C++ của Coddy.
++ / --
Tăng hoặc giảm một con trỏ sẽ di chuyển nó đến vị trí bộ nhớ tiếp theo hoặc trước đó có cùng kiểu dữ liệu. Điều này rất hữu ích khi ta có một mảng và đặt con trỏ trỏ đến phần tử đầu tiên. Mỗi lần tăng, ta di chuyển sang phải một phần tử
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr++;
cout << *ptr << " ";
ptr--;
cout << *ptr;Output:
1 2 1Như bạn thấy, khi tăng hoặc giảm con trỏ, ta di chuyển đến vị trí bộ nhớ tiếp theo có cùng kiểu dữ liệu, trong trường hợp này là phần tử tiếp theo hoặc trước đó trong mảng
+= / -=
Cộng hoặc trừ một số lớn hơn 1 giúp ta di chuyển nhanh hơn và đi qua nhiều phần tử hơn mỗi lần
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
cout << *ptr << " ";
ptr += 4;
cout << *ptr << " ";
ptr -= 2;
cout << *ptr;Output:
1 5 3n = p2 - p1
Thao tác hữu ích cuối cùng ta có thể thực hiện với con trỏ là tính số phần tử nằm giữa chúng. Ta có thể làm điều đó bằng cách tính hiệu của chúng
int list[] = {1, 2, 3, 4, 5};
int *ptr = &list[0];
int *ptr2 = &list[4];
cout << "Between " << *ptr << " and " << *ptr2
<< " there's " << ptr2-ptr << " elements";Output:
Between 1 and 5 there's 4 elementsTa có thể dùng 3 kỹ thuật này để thực hiện nhiều thao tác hữu ích với con trỏ và giải quyết vấn đề trong các công việc thường ngày
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 độ.
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ễCho mảng số nguyên sau:
int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};- Tạo một con trỏ
ptr1trỏ đến phần tử đầu tiên của mảng. - Tạo một con trỏ
ptr2và gán giá trị củaptrcho nó - Tăng
ptr2để chuyển đến phần tử thứ tư - Tạo
ptr3và gán giá trị củaptr2cho nó - Giảm
ptr3đi 2 vị trí - Tính và IN RA số phần tử nằm giữa phần tử đầu tiên và phần tử cuối cùng trong mảng bằng phép trừ con trỏ theo cách sau
There are {elements} elements between {first} and {last}
Tự làm thử
#include <iostream>
using namespace std;
int main() {
int numbers[] = {10, 20, 30, 40, 50, 60, 70, 80};
// Viết code cho ptr1
// Viết code cho ptr2
// Viết code cho ptr3
// In ra thông báo theo yêu cầu
// KHÔNG THAY ĐỔI BẤT CỨ THỨ GÌ BÊN DƯỚI
// ---------------------------------
cout << "*ptr1 -> " << *ptr1 << endl;
cout << "*ptr2 -> " << *ptr2 << endl;
cout << "*ptr3 -> " << *ptr3 << endl;
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