Autor Tópico: duvida no parametro \0  (Lida 3138 vezes)

Offline vitrick

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
duvida no parametro \0
« Online: 15 de Janeiro de 2011, 19:18 »
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

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Re: duvida no parametro \0
« Resposta #1 Online: 17 de Janeiro de 2011, 11:16 »
Um exemplo resolverá sua dúvida. Imagine que você queira declarar uma variável e colocar o caractere 'A' nela. Você faz assim:

Código: [Selecionar]
char c = 'A';
Mas, você também pode fazer assim:

Código: [Selecionar]
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):

Código: [Selecionar]
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

  • Visitante
Re: duvida no parametro \0
« Resposta #2 Online: 20 de Janeiro de 2011, 02:58 »
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.

Offline vitor lima

  • Usuário Ubuntu
  • *
  • Mensagens: 48
    • Ver perfil
Re: duvida no parametro \0
« Resposta #3 Online: 01 de Fevereiro de 2011, 16:45 »
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.