What is output? void main() { int ints[] = { 0, 5, 10, 15 }; int* i2 = ints + 2; int a = *i2++; // a = *(i2++); printf("%d#%d\n", a, *i2); getch(); }
Trả lời:
Đáp án đúng: A
Đoạn code C này liên quan đến việc sử dụng con trỏ và mảng.
Ban đầu, `ints` là một mảng các số nguyên: `{0, 5, 10, 15}`. `i2` là một con trỏ kiểu `int*` được gán bằng địa chỉ của phần tử thứ ba trong mảng `ints` (tức là `ints + 2`), do đó `i2` trỏ đến giá trị `10`.
Sau đó, `a = *i2++;` có nghĩa là:
1. `*i2` lấy giá trị mà `i2` đang trỏ tới (là 10) và gán cho `a`. Vậy `a = 10`.
2. `i2++` tăng con trỏ `i2` lên một vị trí trong mảng. Vì `i2` ban đầu trỏ đến `ints[2]`, sau phép tăng, `i2` sẽ trỏ đến `ints[3]` (tức là giá trị `15`).
Cuối cùng, `printf("%d#%d\n", a, *i2);` in ra giá trị của `a` (là 10) và giá trị mà `i2` đang trỏ tới (là 15).
Vậy, kết quả in ra là `10#15`.