O caractere nulo (em inglês, caractere nulo , terminador nulo ou byte nulo , abreviado como NUL ou NULL ) é um caractere de controle com valor zero.
Ele está presente em muitos conjuntos de caracteres, incluindo ISO / IEC 646 (ou ASCII ), códigos de controle C0 e C1 (en) , ISO / IEC 10646 ( Unicode ) e EBCDIC . Também está disponível em quase todas as linguagens de programação tradicionais.
O significado original desse caractere era como a instrução nula : quando enviado para uma impressora ou terminal , ele não faz nada (alguns terminais, no entanto, exibem-no incorretamente como um espaço). Quando teleimpressoras eletromecânicas eram usadas como dispositivos de saída de computador, um ou mais caracteres nulos eram enviados no final de cada linha para permitir que o mecanismo retornasse à primeira posição de impressão na próxima linha. Em uma faixa perfurada , o caractere nulo é representado pela ausência de perfurações. Assim, uma nova faixa não perfurada é preenchida com caracteres nulos. O texto geralmente pode ser inserido em um marcador de posição de caractere nulo colocando novos caracteres sobre os caracteres nulos.
Hoje, o caractere tem muita importância na linguagem C e seus derivados e em muitos formatos de dados onde serve como um caractere reservado usado para significar o final de uma string , geralmente chamado de string terminada em nulo. (In) . Isso permite que a string tenha qualquer comprimento com uma única sobrecarga de byte, a alternativa é armazenar uma contagem de caracteres que impõe um limite de comprimento de string de 255 para um contador de um byte ou uma sobrecarga de mais de um byte.
Em todos os conjuntos de caracteres modernos, o caractere nulo tem valor zero. Na maioria das codificações, isso é implementado como uma única unidade sem código com um valor zero. Por exemplo, em UTF-8 , este é um único byte contendo 8 bits com valor zero. No entanto, no UTF-8 modificado , o caractere nulo é codificado como dois bytes: 0xC0, 0x80. Isso permite que o byte de valor zero, que agora não é usado para nenhum caractere, seja usado como um indicador de fim de string .
“Uma string de byte terminada em nulo , ou NTBS, é uma sequência de caracteres cujo elemento de endereço mais alto com conteúdo definido tem o valor zero (o caractere nulo de terminação ); nenhum outro elemento na sequência tem o valor zero. "