Título: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: maicol_962016 en 22 Febrero 2016, 21:42 pm alguien me podría explicar esta forma de usar punteros es que no me queda muy clara y me confundo.
typedef struct nodo{ int valor; struct nodo *siguiente; }tiponodo; typedef tiponodo *pila; //esta es la parte q no me queda tan clara ya q lo q entiendo es que estamos //creando un puntero que va contener direcciones de memoria de la estructura tiponodo que se llama pila y con typedef lo podemos declarar con el nombre //pila; typedef tiponodo *pnodo;//y en esta linea hacemos lo mismo q lo anterior void push(pila *pil,int v); int main(){ pila pil=NULL; //aqui creo q el contenido de este puntero es una direccion nula push(&pil,5); //aqui creo que estamos enviando la direccion de memoria de pil q es un puntero push(&pil,8); push(&pil,10); return 0 } void push(pila *pil,int v){//aqui esta parte si no entiendo nada xq se supone q pila ya es un puntero y xq creamos un puntero de tipo puntero y se me hace confuso. pnodo nuevo=(pnodo)malloc(sizeof(tiponodo)); nuevo->valor=v; nuevo->siguiente=*pil; *pil=nuevo; } Título: Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: sodark en 22 Febrero 2016, 22:32 pm Explica que es lo que no entiendes exactamente.
Título: Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: MAFUS en 22 Febrero 2016, 22:50 pm Es confuso al principio pero debes visualizarlo de esta forma:
Las funciones, al recibir parámetros, reciben copias de los datos. Cuándo reciben un puntero, lo que reciben es una copia del puntero. Jugar con ésto permite al programador poder modificar los valores de una variable externa, como bien sabes, al pasar la referencia de esa variable. Si miras el código se necesita variar el puntero en sí: Código
Como puedes ver en la linea 5 el valor de pil, que en realidad es una dirección de memoria, recibe el valor del puntero nuevo. Si no se hubiera usado un puntero a puntero en la llamada a la función, ésta trabajaría con una copia local de la dirección del puntero pil y, al salir del ámbito de la función push, no habría habido cambios en main, con lo que el programa no haría lo que debería hacer. La forma de trabajar es la misma que si fuera un dato normal: Por ejemplo una función declarada así Código ya puedes imaginar que se cambiará el contenido del entero i que se le pase con Código Pues de la misma forma puedes esperarte que a la siguiente función Código servirá para que puedas cambiar la dirección a la que apunta un puntero que le pases así: Código Aunque cuidado, porqué también se puede referir a que se va a pasar una tabla, pero eso ya es otro tema. Título: Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: furciorifa en 23 Febrero 2016, 04:00 am Primero que nada te recomiendo leer Understanding and Using pointers in C es de la editorial O'reilly , lo subiría aquí pero son muy especiales a la hora de compartir contenido de este tipo.
Título: Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: lfgmespino en 28 Febrero 2016, 00:34 am Debería quedar así.
Código
Título: Re: ¿Me podrian explicar como funciana los punteros en una pila con el sgte ejercic? Publicado por: furciorifa en 6 Marzo 2016, 15:24 pm La manera más fácil de visualizar es para modificar
Código pasándolo a una función Código tenemos que pasar por referencia & x entonces lo que quieres modificar es un puntero pero por referencia entonces debes usar un puntero a puntero para poder modificar este |