Một thủ thuật thú vị trong C/C++: chỉ số mảng A[i] cũng có thể viết là i[A].
Trong C/C++, E1[E2] được định nghĩa là *((E1) + (E2)). Trình biên dịch thực hiện phép cộng con trỏ nội bộ để truy cập phần tử. Do quy tắc chuyển đổi kiểu áp dụng cho toán tử + nhị phân, nếu E1 là đối tượng mảng và E2 là số nguyên, thì E1[E2] chỉ phần tử thứ E2 trong mảng E1.
Vậy A[B] = *(A + B), và B[A] = *(B + A). Vì cộng có tính giao hoán, A + B == B + A, nên chúng giống hệt nhau.
Ví dụ
#include <iostream>
using namespace std;
int main() {
int array[] = {1, 2, 3, 4, 5, 6, 7};
cout << "array[5] la " << array[5] << endl;
cout << "5[array] la " << 5[array];
}
Kết quả đầu ra
array[5] la 6 5[array] la 6