C Con_trỏ_rỗng

Trong C, hai con trỏ rỗng của bất kỳ kiểu nào cũng được đảm bảo là bằng nhau.[1] Macro NULL được dùng để định nghĩa một hằng số con trỏ rỗng,[2] mà trong tiêu chuẩn C99 có thể linh hoạt xem như một giá trị kiểu nguyên 0 được chuyển đổi tường minh hoặc bất tường minh qua kiểu void*.[3]

Tham chiếu ngược một con trỏ rỗng có thể dẫn đến kết quả là hệ thống sẽ cố gắng đọc hoặc ghi in từ một vùng nhớ không được trỏ tới - gây ra lỗi phân đoạn hoặc xâm phạm truy cập (access violation). Khi đó, chương trình sẽ gặp lỗi hỏng hóc hoặc một ngoại lệ (exception) sẽ được "ném" ra. Tuy vậy, trong một số trường hợp, đây không phải là vấn đề nặng nề. Thí dụ, với các máy x86, địa chỉ 0000:0000 có thể được đọc và thường là có thể ghi được, cho nên, phép tham chiếu ngược biến con trỏ rỗng là hoàn toàn hợp lệ, một số hệ quả không mong muốn tuy không dẫn đến sập hệ thống nhưng cũng gây ra lỗi thiếu định nghĩa (undefined). Nên chú ý là cũng có những trường hợp khiến cho tham chiếu ngược con trỏ rỗng là có chủ đích và được định nghĩa tốt; ví dụ như mã BIOS viết bằng ngôn ngữ C cho các thiết bị x86 16-bit có thể viết IDT ở địa chỉ vật lý 0 của máy bằng cách sử dụng phép toán tham chiếu ngược một con trỏ rỗng. Trình biên dịch có thể tối ưu hóa bằng cách bằng cách không biên dịch phép tham chiếu ngược đối với con trỏ rỗng, nhằm ngặn chặn lỗi phân đoạn tuy nhiên vẫn có thể gây ra những hành vi nguy cơ khác