vale, reservas una dirección de memoria. Te reserva una direccion de memoria de 1 byte (estamos hablando de los char), pero supongamos que en la siguiente dirección, hay información valiosa, esa información te la cargas, x eso de utilizar el malloc, xq si la cosa va mal, t devuelve un errorVaya, creo q ahora m exprese mejor
vaya Eternal Idol, sabes mas que mi profesora de programación (no es que lo diga en tono irónico, es que lo digo en serio)
Tendré que corregirme a mi mismo, que dije que hacer una declaración como char *variable, y luego hacer gets(variable) estaba mal, pero veo que no.
corrigeme si m ekivoco, pero t declaras un puntero (var), y luego dices, que el contenido de ese puntero (*var) cuya dirección es (var) sea 'A', es como si haces esto:
char *var, var2;var2 = 'A';*var=var2; //*var no es el contenido de "var"?yo pensaba que eso estaba bien, pero parece que tengo un error de conceptos un poco grande.
char *var;
Hay una cosilla más para agregar.El tamaño de "puntero a char" llamado "var" no es 1 bytes, es decir, no tiene el tamaño de un "char" sino de un "puntero a char" que segun el sistema operativo, puede ser 16 (DOS),32bits = 4 bytes(Windows XP),64 bits (Vista version 64).
Citarchar *var;Hay una cosilla más para agregar.El tamaño de "puntero a char" llamado "var" no es 1 bytes, es decir, no tiene el tamaño de un "char" sino de un "puntero a char" que segun el sistema operativo, puede ser 16 (DOS),32bits = 4 bytes(Windows XP),64 bits (Vista version 64).
buf, ahora si que estoy perdido.... con lo feliz que era en mi ignorancia , ahora estoy un poco confuso, a ver, los procesadores de 32 bits, por ej, son para procesar instruccines de 32 bits (instrucciones como if, for, etc), mientras que las variables se alojan en memoria (RAM, por lo general). Con los datos y las instrucciones, el procesador hace su trabajo, pero no entiendo que tiene que ver que el SO utilice software de 32 o 64 bits, para que reserve 64 bits para un caracter en el vista de 64 bits, por ejemplo
los procesadores de 32 bits, por ej, son para procesar instruccines de 32 bits (instrucciones como if, for, etc),
mientras que las variables se alojan en memoria (RAM, por lo general)
ero no entiendo que tiene que ver que el SO utilice software de 32 o 64 bits
char a='A';Dependiendo de la máquina y del modelo de memoria que se utilice tenes las siguientes posibilidades:
La verdad en todas las plataformas que trabajé vi eso, fijate:
es por eso que en muchos manuales te dicen que es recomendable usar solo variables int ya que de todas formas siempre utilizas 32 bits...
PD: Y en el mejor de los casos, con instrucciones como:mov byte ptr [edx], 41el registro edx termina conteniendo: 0x00000041
Ademas si lo que decis fuera cierto cadena de caracteres ocuparia 4 * caracter y eso no es asi ...
QUOTE (Karman @ Octubre 26, 2007 03:09 pm)es por eso que en muchos manuales te dicen que es recomendable usar solo variables int ya que de todas formas siempre utilizas 32 bits...Me parece que estas confundiendo con el tema de "alineamiento" a 32 bits.
no... no dije que si tuviera una cadena cada elemento ocuparía un byte... ya que las cadenas se agrupan en bytes consecutivos y el procesador mediante el índice (byte) puede ir pasando de caracter a caracter....
no... lo que yo digo es para definir variables comunes, como contadores, etc... no para el trabajo con strings... y recomendaban justamente eso por lo que te mostré en el código en assembler...
No hice trampa... "Main() must return int"...