JavaScript is required

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(); }

A.

10#15

B.

10#10

C.

15#15

D.

11#15

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`.

Câu hỏi liên quan