Me pueden decir la diferencia?
Soy un estudiante que apenas va comenzando pero al hacer un programa no entiendo, los punteros; he leído sobre el tema pero no me queda claro dentro del programa por que no se que esta haciendo, pero bueno me pueden decir cual es la diferencia entre el asterisco( * ) y el ampersan( & ), por que no me queda claro como lo uso dentro de un programa; gracias.
Imagina los punteros como flechas que apuntan a una variable.
Puedes declarar una variable o un puntero (una flecha) así.
int a; // Variable
int *b; // Puntero. Es una flecha que apuntará a un entero
Cuando tienes la variable y quieres obtener un puntero, le pones & delante
b = &a; // a es variable, &a es una flecha que apunta a la variable a. b era una flecha, aqui estamos haciendo que b apunte al mismo sitio que &a, es decir, b apuntará a la variable a
Si quieres saber cual es el valor de la variable a la que apunta un puntero, pones delante del puntero un *
printf ("%dn", *b); // Esto escribe en pantalla el valor del entero al que apunta b, es decir, el valor de a.
Espero que esto te aclare un poco.
Se bueno.
Puedes declarar una variable o un puntero (una flecha) así.
int a; // Variable
int *b; // Puntero. Es una flecha que apuntará a un entero
Cuando tienes la variable y quieres obtener un puntero, le pones & delante
b = &a; // a es variable, &a es una flecha que apunta a la variable a. b era una flecha, aqui estamos haciendo que b apunte al mismo sitio que &a, es decir, b apuntará a la variable a
Si quieres saber cual es el valor de la variable a la que apunta un puntero, pones delante del puntero un *
printf ("%dn", *b); // Esto escribe en pantalla el valor del entero al que apunta b, es decir, el valor de a.
Espero que esto te aclare un poco.
Se bueno.
hola shark:
El operador & da la dirección de un objeto, este solo se aplica a objetos que están en memoria, o sea a las variables y a los elementos de los arreglos.
por ejemplo: tengo una variable "a" de tipo int y declaro a una variable "ptr" como apuntador a int.
entonces yo puedo hacer lo siguiente:
ptr = &a;
/* con esto hago que ptr apunte a la variable a */
el operador * se utiliza para desreferenciar, o sea puedo tener acceso al objeto.
por ejemplo yo puedo hacer lo siguiente:
int x = 10, y = 0;
int *ptr; /* un apuntador a int */
ptr = &x; /* ptr apunta a la variable x */
y = *ptr; /* y tiene acceso al contenido de ptr, o sea y = 10 */
*ptr = 0; /* x es ahora 0 */
El operador & da la dirección de un objeto, este solo se aplica a objetos que están en memoria, o sea a las variables y a los elementos de los arreglos.
por ejemplo: tengo una variable "a" de tipo int y declaro a una variable "ptr" como apuntador a int.
entonces yo puedo hacer lo siguiente:
ptr = &a;
/* con esto hago que ptr apunte a la variable a */
el operador * se utiliza para desreferenciar, o sea puedo tener acceso al objeto.
por ejemplo yo puedo hacer lo siguiente:
int x = 10, y = 0;
int *ptr; /* un apuntador a int */
ptr = &x; /* ptr apunta a la variable x */
y = *ptr; /* y tiene acceso al contenido de ptr, o sea y = 10 */
*ptr = 0; /* x es ahora 0 */
Gracias por la respuesta pues ahora entiendo un poco más sobre el tema; pero me queda una duda más.
Si el operador ampersan( & ) sirve para las variables almacenadas en memoria y arreglos, el asterisco( * ) es usado para accesar al valor de la variable a la que apunta con capacidad de modificarlo; por que simplemente no pongo:
int a=0,b=10;
a=b;
en lugar de
int *a,b=10;
*a=b;
cuál es el beneficio de usar punteros?, el ejercicio que hice anteriormente esta bien?, y cómo puedo identificar el momento adecuado en el que puedo usarlo en un programa?
Gracias de antemano.
Si el operador ampersan( & ) sirve para las variables almacenadas en memoria y arreglos, el asterisco( * ) es usado para accesar al valor de la variable a la que apunta con capacidad de modificarlo; por que simplemente no pongo:
int a=0,b=10;
a=b;
en lugar de
int *a,b=10;
*a=b;
cuál es el beneficio de usar punteros?, el ejercicio que hice anteriormente esta bien?, y cómo puedo identificar el momento adecuado en el que puedo usarlo en un programa?
Gracias de antemano.
