JavaScript is required

What is output? (assuming that the array begins at the location 1002 and size of an integer is 4 bytes) #include #include int main() { int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; printf("%u, %u, %u\n", a[0]+1, *(a[0]+1), *(*(a+0)+1)); getch(); }

A.

1006, 2, 2

B.

1006, 4, 4

C.

1002, 5, 5

D.

Error

Trả lời:

Đáp án đúng: A


Đề bài yêu cầu xác định output của chương trình C. Chương trình này sử dụng mảng hai chiều và in ra các giá trị địa chỉ và giá trị của các phần tử trong mảng. Phân tích: - `int a[3][4]` khai báo một mảng hai chiều gồm 3 hàng và 4 cột các số nguyên. - `a[0]` là địa chỉ của hàng đầu tiên của mảng. Do đó, `a[0] + 1` sẽ là địa chỉ của phần tử thứ hai trong hàng đầu tiên. Vì mỗi số nguyên chiếm 4 bytes, địa chỉ này sẽ là 1002 + 4 = 1006. - `*(a[0] + 1)` sẽ trả về giá trị tại địa chỉ `a[0] + 1`, tức là giá trị của phần tử thứ hai trong hàng đầu tiên, là 2. - `*( *(a + 0) + 1)` tương đương với `*(a[0] + 1)`, vì `a + 0` tương đương `a`, và `*(a[0] + 1)` tương đương với việc lấy giá trị tại địa chỉ `a[0] + 1`, tức là 2. Như vậy, output sẽ là: 1006, 2, 2

Câu hỏi liên quan