A matriz de caracteres ASCII-Zero

Arrays em C ++ têm um problema inerente: Você nunca pode saber, só de olhar para a matriz, quantos valores são realmente armazenados nele. Conhecendo o tamanho de uma matriz não é suficiente. Isso diz-lhe quantos valores da matriz posso segure, e não quantas ele realmente faz aguarde.

A diferença é como a diferença entre a quantidade de gás do tanque do seu carro pode segurar e quanto gás ele realmente tem. Mesmo que o seu tanque tem 20 litros, você ainda precisa de um medidor de gás para lhe dizer o quanto está nele.

Existem basicamente duas formas de manter o controle da quantidade de dados em uma matriz:

  • Manter uma contagem do número de valores em uma separateintvariable. Esta é a técnica utilizada pela ArrayDemo programa. O código que lê a entrada do usuário mantém o controle do número de entradas na nCount. O único problema é que o programa tem de passar nCount juntamente com todas as funções a que se passou no nScores array. A matriz não é útil sem o conhecimento de quantos valores ele armazena.

  • Usar um valor especial na matriz como um indicador do último elemento utilizado. Por convenção, esta é a técnica utilizada para matrizes de caracteres em C ++.

Uma caracteres ASCII, em particular, não é um personagem legal: ' 0'. Este carácter é também conhecido como o nulo personagem. É o personagem com um valor numérico de zero. Um programa pode usar o nulo personagem como a extremidade de uma cadeia de caracteres.

O caractere nulo não possui senão sinalizando o fim de um array de caracteres propósito. O usuário nunca pode inserir um caractere nulo. Isso significa que você não tem que passar uma variável contagem separada ao redor - você pode sempre dizer ao final da cadeia, procurando por um nulo.

Os designers de C e C ++ gostou deste recurso tão bem que eles se estabeleceram nele como o padrão para cadeias de caracteres. Eles até mesmo deram-lhe um nome: o ASCII de zero matriz ou ASCIIZ abreviado.

o nulo personagem tem uma outra propriedade vantajosa. É o único personagem cujo valor é considerado falso numa expressão de comparação (tal como em um loop ou um E se declaração).

Lembre-se que 0 ou nulo é considerado falso. Todos os outros valores avaliar a verdade. Isso faz com loops de escrita que manipulam cordas ASCIIZ ainda mais fácil.

menu