What is output? void main() { int ints[] = { 0, 1, 2, 3 }; int* i1 = ints + 1; int a = ++*i1; int b = a + *i1; printf("%d\n", b); getch(); }
Trả lời:
Đáp án đúng: B
Đầu tiên, mảng `ints` được khởi tạo với các giá trị {0, 1, 2, 3}.
`int* i1 = ints + 1;` Khai báo một con trỏ `i1` và gán cho nó địa chỉ của phần tử thứ hai trong mảng `ints` (tức là `ints[1]`). Hiện tại, `i1` đang trỏ tới giá trị 1.
`int a = ++*i1;` Toán tử `++` được sử dụng trước `*i1`, có nghĩa là giá trị mà `i1` đang trỏ tới (tức là `ints[1]`) sẽ tăng lên 1 trước khi gán cho `a`. Vì vậy, `ints[1]` trở thành 2, và `a` cũng được gán giá trị 2.
`int b = a + *i1;` `b` được gán bằng tổng của `a` và giá trị mà `i1` đang trỏ tới. `a` có giá trị là 2, và `*i1` (tức là `ints[1]`) cũng có giá trị là 2. Vậy, `b = 2 + 2 = 4`.
`printf("%d\n", b);` In giá trị của `b` ra màn hình. Vậy kết quả in ra là 4.





