duvida no parametro \0

Iniciado por vitrick, 15 de Janeiro de 2011, 19:18

tópico anterior - próximo tópico

vitrick

Ola galera!

Estou iniciando em C/c++ e ao deparar com o seguinte trecho de codigo:

...
char x [3][3] = {{'\0','\0','\0'},{'\0','\0','\0'},{'\0','\0','\0'}},n='X'

...
fiquei com as seguintes duvidas:
para que serve o '\0'?
e por que tem esse n ='X'?

agradecido

fpissarra

Um exemplo resolverá sua dúvida. Imagine que você queira declarar uma variável e colocar o caractere 'A' nela. Você faz assim:

char c = 'A';

Mas, você também pode fazer assim:

char c = '\65';

Pq 65 é o código ASCII do caractere 'A'. E se vocẽ quisesse colocar o valor 0 (não o caractere '0')? Pode fazer isso de duas maneiras (vou usar o seu exemplo):

char x[3][3] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };

Esses valores 0 são inteiros que o compilador converterá para 'char'. Você pode fazer isso diretamente usando o "caractere" '\0'.

No caso do seu exemplo, duas variáveis são criadas: x e n. A variável "n" é inicializada com o caractere 'X'.

Blz?

Darcamo

Só complementando, em C puro não há um tipo propriamente dito para "strings", mas apenas o tipo para um único caractere que é o tipo char. Strings em C são na verdade apenas "arrays de char". Só que arrays em C não sabem seu próprio tamanho e é daí que vem a necessidade do "\0" no final das strings em C. É ele que indica "aqui é o fim da string" de forma que as funções que tratam strings em C possam funcionar corretamente.

vitor lima

Como foi dito, em C o tipo String não é tratado como um tipo primitivo (assim como são tratados os tipos int, double, char, etc...).  Nesse caso, uma string é só uma sequência de caracteres (um vetor do tipo char).


A ultima posição de uma string no C (que não é nada mais que um vetor) é sempre um '\0'.

Por exemplo, poderíamos fazer

char string[3];
string[0] = 'a';
string[1] = 'b';
string[2] = '\0';



para obter uma string com dois caracteres.