Una cosa que siempre me confundió, el puntero del personaje. Es después de largos cuatro años que estoy de nuevo persistiendo en c.¿A qué se inicializa un puntero?
Tomemos por ejemplo el caso mencionado. ¿Por qué el puntero char
se comporta de esta manera? ¿Cómo podemos abordar directamente el contenido de la punta cuando no apunta a nada o es como que el puntero almacena cosas que no sean direcciones?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* charPtr="I cant understand why";
int* intPtr=60;
printf("%d\n", intPtr); //displays 60
printf("%p\n", intPtr); // displays the hex value of 60
printf("%s\n", charPtr); // displays the wh0le string
printf("%p\n", charPtr); // displays the start address of the string
return 0;
}
A continuación, el puntero int
, ¿Cómo se puede aceptar el valor de 60 y de dónde se almacenan?
dejando de lado el puntero de char y malloc, ¡pensé que la idea básica del puntero era conseguir una dirección para señalar!
¿Por qué estos casos
*intptr = 60 ; // should be setting the pointee's value to 60
intptr = 60 ; // sets the address
error de compilación tiro mientras
int* intPtr=60;
coló sin obtener una dirección (o 60 tomado como la dirección, si es así por qué esto no es aceptable no en el primer caso) de la punta
Supongo que me falta algo aquí pero ¡oye! Adivina qué ? me dijeron que busque en SO!
EDITAR: Dar a la dirección apuntada por el puntero de char a un puntero int también arroja ningún error!
int8_t* intPtr= (int8_t*)0x80485c8 ; // works without casting too ! I guess addresses are acceptable.
Desreferenciar que dará un valor equivalente a la primera I
de la cadena .IS esto una buena práctica o existe alguna otra explicación a esta dejando de lado emabrgo asignación de tamaño bit byte como un int puede contener un char y entonces.. ?
Como hmjd señaló, la "sintaxis de inicialización" es el problema. No tengo problemas para escribir mi propio código, pero surge un problema cuando modifico el código de alguien.
Es realmente difícil averiguar lo que realmente está preguntando. Un puntero es una variable cuyo valor suele ser la dirección de otra variable. –
* Supongo que me falta algo aquí * Buen libro de programación C/tutorial, en realidad. Has hecho muchas preguntas frecuentes. –
@DavidSchwartz ¡Sí! Esa es la idea básica en mí también :) pero ¿qué está pasando aquí? – Borrito