por que mesmo após limitar a quantidade de caracteres dentro de um char eu consigo exceder o limite dentro do codigo
por que mesmo após limitar a quantidade de caracteres dentro de um char eu consigo exceder o limite dentro do codigo
Oi Filipe! Tudo bem?
O que acontece é que esse não é considerado um erro de compilação, então a única coisa que o C faz é armazenar todos os caracteres da forma que for possível, cortando o fim da palavra. Por exemplo, no código:
int main(){
char palavra[5]= "Teste123";
printf("%s \n", palavra);
}
Será salva e impressa a palavra "Teste", o "123' vai ser ignorado. No meu caso, apareceu um "Warning" do compilador, falando que a palavra armazenada era muito grande para o vetor de caracteres.
Isso acontece pela implementação interna das Strings. Elas são consideradas arrays de caracteres, mas por baixo dos panos utilizam ponteiros, que é um assunto que está um pouco à frente no curso que você está realizando. Quando a gente usa ponteiros, o sistema reserva um espaço e armazena o que queremos guardar. Mas, se colocarmos dados a mais e houver espaço, essa informação pode ser guardada também. No exemplo que dei, se no seu sistema tiver espaço, esse 123 está guardado em algum lugar, ele só não tem "nome", porque não tem nenhuma variável apontando para essa parte da palavra, já que o vetor palavra
considerava apenas as 5 primeiras letras.
Parece um pouco complexo, mas à medida que você for trabalhando com a linguagem vai ficando mais claro. Caso não tenha entendido alguma coisa da explicação, pode ficar à vontade para perguntar!
Espero ter ajudado! Abraços e bons estudos!