char * str; str = “OLÁ”; Como isso funciona sem alocar memória para a string?
Código:
#include <stdio.h>
int main() {
char *str;
char i = 'a';
str = &i;
str = "Hello";
printf("%s, %c, %x, %x", str, i, str, &i);
return 0;
}
Eu recebo esta saída:
Hello, a, 403064, 28ff0b
Eu tenho duas dúvidas:
Como posso armazenar uma string sem alocar memória para ela.str
é um ponteiro de caractere e está apontando para onde char variáveli
. Quando eu adicionostr = "Hello";
não estou usando5
bytes desse local4
dos quais não são atribuídos?
Desde então, eu codificostr = &i;
não deveriastr
e&i
tem o mesmo valor quando eu os imprimo? Quando eu remover ostr = "Hello";
declaraçãostr
e&i
são iguais. E sestr
e&i
são mesmo então eu acredito quando digostr = "Hello"
deve sobrescrever'a'
com'H'
e o resto'ello\0'
entrar nos bytes subseqüentes.
Eu acredito que todo o problema é comstr = "Hello"
declaração. Não parece estar funcionando como eu penso.
Por favor, alguém explique como funciona?