char * str; str = "HOLA"; ¿Cómo funciona eso sin asignar ninguna memoria para la cadena?
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;
}
Obtengo esta salida:
Hello, a, 403064, 28ff0b
Tengo dos dudas siguientes:
¿Cómo puedo almacenar una cadena sin asignar ninguna memoria para ello.str
es un puntero de carácter y apunta a donde variable chari
. Cuando agregostr = "Hello";
no estoy usando5
bytes de esa ubicación4
de los cuales no se asignan?
Desde entonces, codificostr = &i;
no deberíastr
y&i
¿Tienes el mismo valor cuando los imprimo? Cuando quito elstr = "Hello";
declaraciónstr
y&i
son idénticos. Y sistr
y&i
son lo mismo entonces creo cuando digostr = "Hello"
debería sobrescribir'a'
con'H'
y el resto'ello\0'
entrar en los bytes posteriores.
Creo que todo el problema es constr = "Hello"
declaración. No parece estar funcionando como lo que pienso.
Por favor alguien explique como funciona ??