Caractere nulo
Origem: Wikipédia, a enciclopédia livre.
O caractere nulo (null character) ou terminador nulo é um caractere da tabela ASCII e do conjunto de caracteres Unicode cujo valor é 0 (zero). Este caractere esta disponível nas principais linguagens de programação. Originalmente, este caractere tinha o mesmo significado da instrução NOP da linguagem assembly; quando enviada a uma impressora ou terminal de computador, ela não tinha qualquer efeito (alguns terminais, porém, mostravam esta instrução (erroneamente) como um espaço). Na fita perfurada este caractere é representado pela ausência de perfuração, consequentemente uma fita ainda não usada é completamente preenchida com caracteres nulos.
Em muitos computadores e teclados de terminais de dados, é possível inserir um caractere nulo pressionando simultaneamente a tecla control e a tecla "@" (usualmente, além disso é necessário pressionar a tecla shift e outra tecla como a "2" ou "P"). Consequentemente, em alguns contextos, o caractere nulo é representado visualmente como "^@
". Em outros contextos, ele é representado como símbolo subscrito, "NUL
". No padrão Unicode, existe um caractere para representação visual do caractere nulo, o "símbolo para nulo", U+2400 — não deve ser confundido com o caractere nulo verdadeiro, U+0000.
Na linguagem de programação C existe um significado especial para este caractere. Ele é utilizado para indicar o final de strings de caracteres. O caractere nulo é frequentemente representado como "\0
" no código fonte escrito em C. As strings finalizadas com o caractere nulo são conhecidas como "terminadas em nulo" (null-terminated).
Em algumas linguagens (como Pascal) o caractere nulo não é utilizado, pois as strings são armazenadas em um array precedido pelo tamanho desta string. A principal vantagem da utilização do caractere nulo em strings é que elas podem ter qualquer tamanho, e apenas um caractere adicional é necessário. As strings terminadas pelo caractere nulo podem ter vantagens de desempenho, já que operações que percorrem uma string não precisam manter o registro de quantos caracteres foram vistos, e operações que modificam o tamanho da string não precisam atualizar o array com o novo tamanho. O desempenho de cache também pode ser melhor.
Por outro lado, a vantagem em armazenar o tamanho da string é que ele fica disponível imediatamente; um programa utilizando strings terminadas em nulo precisa contar todos os caracteres para determinar o tamanho da string. Além disso, em strings não terminadas em nulo é possível incluir o caractere nulo no meio de uma string, simplificando o processamento de dados e eliminando exceções. Em strings terminadas em nulo, a primeira ocorrência de um caracter nulo é interpretada como o final da string.
Entretanto, o tipo de dado utilizado para armazenar o tamanho da string também é importante; se o tamanho é armazenado como um byte, como no Pascal, as strings tem um limite de tamanho de 255 caracteres! Tipos de dados maiores, por outro lado, tomam mais espaço de memória que o caractere nulo (um número de 16 bit ocupa dois bytes e um número de 32 bit ocupa quatro). Nos anos 70, quando a linguagem C foi projetada, os limites de espaço em memória eram considerados problemas muito mais importantes do que hoje, o que levou a escolha de strings terminadas com o caractere nulo.
- Um byte com todos os bits em 0, chamado de caractere nulo (null character), deve existir no conjunto básico de caracteres; ele é utilizado para terminar a string literal de caracteres.
- - ANSI/ISO 9899:1990 (O padrão ANSI C), seção 5.2.1
- Uma "string" é uma sequência contígua de caracteres terminados por e incluindo o primeiro caractere nulo.
- - ANSI/ISO 9899:1990 (O padrão ANSI C), seção 7.1.1
- Uma null-terminated byte string ou NTBS (string de bytes terminada por nulo) é uma sequência de caracteres cujo elemento de maior endereço, com conteúdo definido, possui o valor zero (o caracter nulo).
- - ISO/IEC 14882 (O padrão ISO C++), seção 17.3.2.1.3.1