Llevo un tiempo dandole vueltas al tema de punteros, con diferentes explicaciones, sé lo que son y cómo se usan, pero en la práctica me hago un lío y nunca me salen bien los ejercicios. ¿conocen algun buen tutorial de C?
Gracias de antemano!
| |||
Buen tutorial de punteros Llevo un tiempo dandole vueltas al tema de punteros, con diferentes explicaciones, sé lo que son y cómo se usan, pero en la práctica me hago un lío y nunca me salen bien los ejercicios. ¿conocen algun buen tutorial de C? Gracias de antemano! |
| |||
Re: Buen tutorial de punteros Si te haces un lío es porque no tienes los conceptos claros. http://www.google.es/search?hl=es&q=punteros+C Todos esos ;) |
| |||
Re: Buen tutorial de punteros Gracias por la ayuda, vosotros haceis que esto de la programación sea más bonito (en clase puede llegar a ser un coñazo), a ver si consigo pillarle el truco! |
| ||||
Re: Buen tutorial de punteros Cita: El mejor truco es pensar y entender bien las cosas...asi cuando te suejan problemas nuevos y diferentes seras capaz de mezclar todo lo que sabes y generar una solucion a partir de alli...Gracias por la ayuda, vosotros haceis que esto de la programación sea más bonito (en clase puede llegar a ser un coñazo), a ver si consigo pillarle el truco! Saludos
__________________ Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba: |
| ||||
Re: Buen tutorial de punteros No se, para mi la mejor forma de aprender fue aventandome aun proyecto largo, grande y dificil ya que generalmente necesitas de todo el potencial del lenguaje y ahi vas aprendiedo la eficiencia de codigos al igual que nuevas tecnicas de programacion. Saludos |
| |||
Re: Buen tutorial de punteros Tengo un ejercicio que es el siguiente código: #include <stdio.h> void funcion(int *c, int b, int *a) { *c = b + *c; b = * a + *c; *a = b * *c; } void main(void) { int a=1,b=1,c=-2; funcion(&a,b,&b); printf("a = %d b = %d c = %d ",a,b,c); funcion(&c,b,&a); printf("a = %d b = %d c = %d",a,b,c); } y tengo que obtener (sin compilador) lo que imprime. Sé que en el primer caso el resultado es: a=2 b=6 y c=-2 y en el segundo a=24 b=6 y c=4. El tema está en que no sé como llegar a esos resultados (manualmente), comprendo bien de que se tratan los ficheros pero este ejercicio no lo saco. ¿Alguien me puede enseñar un método para sacar las soluciones de este tipo de problemas? Muchas gracias a todos, os agradezco toda la ayuda. Por cierto muy buenos los tutoriales y web recomendados pero no me solucionan el problema. |
| |||
Re: Buen tutorial de punteros Buenas Yo hace poco empecé con los punteros y voy a tratar de darte una solución al problema que planteas. Si me equivoco por favor haganmelo saber así sigo aprendiendo. Lo que hice principalemente fue comentarte un poco el programa para que lo entiendas mejor. Espero sirva
Código:
PD: Hice alguna mínima modificación en el código para que compile "bien" en el Dev-C++, pero no es nada que cambie el contenido del programa.#include <stdio.h> void funcion(int *c, int b, int *a) { *c = b + *c; b = * a + *c; *a = b * *c; } int main(void) { int a=1,b=1,c=-2; funcion(&a,b,&b); /* *a += b; como b = 1 -> *a = 2 b = *b + *a; b = 3 *b = b * *a como b = 3 y *a = 2 -> *b = 6 Como no se realizan modificaciones en el contenido de c este queda con valor -2 No se si ya lo sabías de antes, pero el asterisco adelante de la variable es para acceder al contenido de la misma */ printf("a = %d b = %d c = %d ",a,b,c); /* como %d corresponde a enteros, imprimis el contenido de la variables, que como te mostré y vos dijiste son a = 2, b = 6, c = -2 */ funcion(&c,b,&a); /* *c += b; como b = 6 y *c = -2 -> *c = 4 b = *a + *c; como *a = 2 y *c = 4 -> b = 6 *a = b * *c como b = 6 y *c = 4 -> *a = 24 */ printf("a = %d b = %d c = %d",a,b,c); /* Mismo concepto que el anterior */ getchar(); return 0; } Saludos |
| |||
Re: Buen tutorial de punteros Creo q ya lo entiendo :D Vamos, quiero decir, ahora entiendo xq me salían valores diferentes, eso es xq al decir funcion(&a,b,&b); y funcion(int *c, int b, int *a) en vez del valor de c cuando es *c realmente va *a, b no varía y en vez de *a va *b. ¿es así? Que ilu ya lo entiendo!!!! |
| ||||
Re: Buen tutorial de punteros Cita: Tres tristes tigres tragan trigo en un trigalCreo q ya lo entiendo :D Vamos, quiero decir, ahora entiendo xq me salían valores diferentes, eso es xq al decir funcion(&a,b,&b); y funcion(int *c, int b, int *a) en vez del valor de c cuando es *c realmente va *a, b no varía y en vez de *a va *b. ¿es así? Que ilu ya lo entiendo!!!! Jajajajajaja... Solo toma en cuenta lo siguiente: Cuando tengas una funcion de este estilo Cita: Quiere decir que el primer y el tercer parametro almacenaran direcciones de memoria, es decir son punteros.void funcion(int *c, int b, int *a) Cuando invoque la funcion de esta manera: Cita: Estas pasando la direccion de pepe y jose que seran almacenadas en *c y *a respectivamente, los nombres de las variables realmente no importan asi quefuncion(&pepe, maria, &jose); Cita: Es completamente valido y quiere decir que pasas las direcciones de c y a que seran almacenadas en *c y *a respectivamente.funcion(&a, d, &c); Saludos
__________________ Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba: Última edición por _Lucifer_; 11/01/2007 a las 06:56 |
| |||
Re: Buen tutorial de punteros GRACIAS!!!Me acabais de ahorrar un monton de trabajo, llevo semanas dandole vueltas al ejercicio y no entendía xq no me saía, pero ya lo entiendo perfectamente... yujuuuu que emosiooon, muchas gracias, espero aprobar IP1 en febrero! jaja, os lo haré saber, MUXISIMAS GRACIAS!!!!! |