What will be the output of the following program?

4 phương ánCó giải thích
Đề bài
int main()
{
        int i = 101;
            int *p = &i;
            printf("%d\n", *p++);
    return 0;
}

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: "101". Trong biểu thức *p++, toán tử tăng hậu tố gắn với p chứ không với *p, và nó trả về giá trị con trỏ trước khi tăng, nên phép lấy nội dung làm việc trên địa chỉ cũ, tức đọc i và in 101; chỉ sau lệnh đó p mới trỏ ra ô kế tiếp, điều này vô hại vì p không được dùng nữa. "102" là kết quả nếu tăng chính giá trị được trỏ, tức viết (*p)++ hoặc ++*p; ở đây phép tăng chạm vào con trỏ, không chạm vào i. "0" không có cơ sở nào vì ô nhớ của i chứa 101 và không bị ghi lại. "Address of i" sai vì biểu thức *p đã lấy nội dung chứ không phải địa chỉ, hơn nữa muốn in địa chỉ thì phải dùng p với định dạng %p.

Cùng phần 5

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