What is the output?

4 phương ánCó giải thích
Đề bài
int arr[] = {1, 2, 3, 4};
printf("%d", *(arr + 2));

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "3". Tên mảng dùng trong biểu thức suy biến thành địa chỉ phần tử đầu, và số học con trỏ đếm theo phần tử chứ không theo byte, nên cộng 2 vào tên mảng cho ra địa chỉ của phần tử có chỉ số 2. Dấu sao lấy nội dung tại địa chỉ đó nên in ra 3. Đây đúng là nghĩa gốc của phép viết chỉ số: ngôn ngữ định nghĩa truy cập mảng chính là phép lấy nội dung của địa chỉ đầu cộng độ lệch. Lựa chọn "1" là phần tử ở chỉ số 0, tức kết quả nếu không cộng độ lệch nào. Lựa chọn "2" là phần tử ở chỉ số 1, ứng với cách đếm bắt đầu từ 1 thay vì từ 0. Lựa chọn "4" là phần tử ở chỉ số 3, sẽ đúng nếu độ lệch viết là 3.

Cùng phần 5

Xuất hiện trong 1 bộ đề