Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tại sao a[i] == i[a] trong mảng C/C++?


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