Assume we have a snippet code in C:

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

The output will be:

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: "0". Hằng con trỏ rỗng trong thực tế được mọi trình dịch phổ thông hiện thực bằng giá trị số 0, nên p mang giá trị 0 và lệnh in cho ra 0. Cần nói rõ phần khuyết của mã: đặc tả số nguyên chờ một int mà nhận con trỏ, đây là sai khớp định dạng và là hành vi không xác định theo chuẩn; nó chỉ cho kết quả như mong đợi vì giá trị bên trong con trỏ rỗng đúng là 0. Cách viết đúng là dùng đặc tả con trỏ và ép sang con trỏ vô kiểu. Lựa chọn "1" không ứng với gì ở đây vì không có phép tăng nào trên p. Lựa chọn "10" sẽ đúng nếu p được gán giá trị 10, nhưng mã chỉ gán hằng con trỏ rỗng. Lựa chọn "100" cũng vậy, không có phép tính nào trong mã sinh ra con số đó.

Cùng phần 5

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