JavaScript is required

Chương trình sau cho kết quả là gì?

#include

void main() {

int *px, *py;

int a[] = {1, 2, 3, 4, 5, 6};

px = a;

py = &a[5]

printf(“%d”, ++px - py);

};

A.

-4.

B.

2.

C.

5.

D.
Không có kết quả đúng.
Trả lời:

Đáp án đúng: A


Đầu tiên, `px` được gán địa chỉ của phần tử đầu tiên của mảng `a`, tức là `a[0]`. Sau đó, `py` được gán địa chỉ của phần tử cuối cùng của mảng `a`, tức là `a[5]`. Tiếp theo, `++px` tăng giá trị của `px` lên một đơn vị (tức là di chuyển `px` đến phần tử kế tiếp trong mảng, `a[1]`). Do đó, biểu thức `++px - py` tính hiệu giữa địa chỉ của `a[1]` và địa chỉ của `a[5]`. Trong C, khi trừ hai con trỏ cùng kiểu, kết quả là số lượng phần tử giữa hai địa chỉ đó. Vậy, `++px - py` tương đương với `&a[1] - &a[5]`, kết quả là `1 - 5 = -4`. Do đó, chương trình in ra giá trị -4.

Câu hỏi liên quan