Giới thiệu
Con trỏ và mảng là hai khái niệm quan trọng trong ngôn ngữ lập trình C++. Trong bài học trước, chúng ta đã tìm hiểu về sự liên quan giữa con trỏ và mảng. Hôm nay, chúng ta sẽ đi sâu vào tìm hiểu về các phép toán trên con trỏ và chỉ mục mảng trong C++.
Phép toán số học trên Con trỏ
Trong C++, bạn có thể thực hiện các phép toán cộng hoặc trừ số nguyên trên con trỏ. Nếu ptr
trỏ đến một số nguyên, ptr + 1
sẽ là địa chỉ của số nguyên tiếp theo trong bộ nhớ sau ptr
. Ngược lại, ptr - 1
sẽ là địa chỉ của số nguyên trước đó trong bộ nhớ trước ptr
.
int value = 5;
int *ptr = &value;
cout ptr '\n'; // Địa chỉ của value
cout ptr + 1 '\n'; // Địa chỉ của số nguyên tiếp theo
cout ptr + 2 '\n'; // Địa chỉ của số nguyên sau tiếp theo
cout ptr + 3 '\n'; // Địa chỉ của số nguyên tiếp theo sau đó
Trong ví dụ trên, mỗi địa chỉ trong số này khác nhau 4 đơn vị, bằng kích thước của kiểu int
là 4 byte.
Mảng tĩnh được lưu trong bộ nhớ như thế nào?
Trong C++, mảng tĩnh là một khối nhớ liên tục được chỉ định cho một biến kiểu mảng. Các phần tử của mảng được sắp xếp tuần tự trong bộ nhớ, nghĩa là array[0], array[1], array[2], ...
nằm cạnh nhau và theo thứ tự.
int array[] = {5, 8, 2, 7};
cout "Element 0 is at address: " &array[0] '\n';
cout "Element 1 is at address: " &array[1] '\n';
cout "Element 2 is at address: " &array[2] '\n';
cout "Element 3 is at address: " &array[3] '\n';
Mỗi địa chỉ trong số này liên tục nhau, khác nhau 4 đơn vị, bằng kích thước của kiểu int
là 4 byte.
Ứng dụng giữa Con trỏ số học, Mảng, và Chỉ mục mảng
Cộng n
vào một mảng sẽ tạo ra một con trỏ trỏ đến địa chỉ phần tử thứ n
của mảng. Điều này có thể được ứng dụng trong trường hợp duyệt một mảng.
const int arrayLength = 4;
int array[arrayLength] = {5, 8, 2, 7};
for (int* ptr = array; ptr array + arrayLength; ptr++) {
cout *ptr '\n';
}
Theo cách này, chúng ta có thể lặp qua từng phần tử của mảng một cách dễ dàng.
Kết luận
Qua bài học này, chúng ta đã tìm hiểu về các phép toán trên con trỏ và chỉ mục mảng trong ngôn ngữ lập trình C++. Đây là những kiến thức quan trọng mà bạn cần nắm vững để có thể sử dụng trong những bài học tiếp theo.