JavaScript is required

What will be output of following program? #include #include void main() { int i = 5; int *p; p = &i printf(" %u %u", *&p , &*p); getch(); }

A.

Address of i Address of i

B.

Garbage value Garbage value

C.

Complier Error

Trả lời:

Đáp án đúng: A


Đoạn code C in ra địa chỉ của biến con trỏ p và địa chỉ của biến i. `*&p`: Toán tử `&` lấy địa chỉ của `p`, và toán tử `*` giải tham chiếu (dereference) địa chỉ đó. Vì `p` là một con trỏ, `*&p` sẽ trả về giá trị của `p`, tức là địa chỉ của `i`. `&*p`: Toán tử `*` giải tham chiếu con trỏ `p`, nghĩa là lấy giá trị mà `p` trỏ tới (trong trường hợp này là `i`). Sau đó, toán tử `&` lấy địa chỉ của giá trị đó, tức là địa chỉ của `i`. Do đó, cả `*&p` và `&*p` đều trả về địa chỉ của `i`. Như vậy, đáp án đúng là "Address of i Address of i".

Câu hỏi liên quan