Autor
|
Tema: Funciones adentro de otras con puntero (Leído 1,503 veces)
|
fafafa01
Desconectado
Mensajes: 82
|
Buenos días, como dice el titulo, hice un programa desde donde pasas la dirección de la variable como parámetros en una función, y dentro de esa función, los parámetros se van a usar de nuevo como parámetros en otra función. mi problema es que el compilador me dice que tiene un error y creo que es por la sintaxis: acá va un ejemplo de la sintaxis: #include <stdio.h>
void funcion1(int *, int *,int *); void funcion2(int *,int *,int *);
void main(void) { int a=b=c=0; funcion1(&a,&b,&c); }
funcion1 (int *a,int *b, int *c) { . . . funcion2(*a,*b,*c); . . }
funcion2(int *a, int *b, int *c) { . . . }
saludos y gracias.
|
|
« Última modificación: 12 Mayo 2016, 16:00 pm por fafafa01 »
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
 
Desconectado
Mensajes: 3.674
🏴 Libertad!!!!!
|
Las funciones deben estar fuera del main. #include <stdio.h> void funcion1(int *, int *,int *); void funcion2(int *,int *,int *); void main(void) { int a=b=c=0; funcion1(&a,&b,&c); } funcion1 (int *a,int *b, int *c) { . . . } funcion2(int *a,int *b,int *c) . . }
El nombre las variables de las funciones 1 y 2 no tiene que ser el mismo. eso te ayudara a entender el paso por referencia con los apuntadores. para guardar un valor en la variable dentro de la funcion tienes que usar a[0] = 1337;
y cuando retornes al main a ya va a valer 1337. Saludos
|
|
« Última modificación: 12 Mayo 2016, 15:12 pm por AlbertoBSD »
|
En línea
|
|
|
|
fafafa01
Desconectado
Mensajes: 82
|
ahí corregí el código, me faltaba un paréntesis: lo pude arreglar asiendo esto: #include <stdio.h>
void funcion1(int *, int *,int *); void funcion2(int *,int *,int *);
void main(void) { int a=b=c=0; funcion1(&a,&b,&c); }
funcion1 (int *a,int *b, int *c) { . . . funcion2(&*a,&*b,&*c); . . }
funcion2(int *a, int *b, int *c) { . . . }
pero no entiendo muy bien: si yo quisiera escribir 2 printf en la función 1, después de haber invocado la función 2 ¿que diferencias hay entre los dos printf del codigo? #include <stdio.h>
void funcion1(int *, int *,int *); void funcion2(int *,int *,int *);
void main(void) { int a=b=c=0; funcion1(&a,&b,&c); }
funcion1 (int *a,int *b, int *c) { . . . funcion2(&*a,& *b,& *c); printf(" %d %d %d ",*a,*b,*c); printf(" %d %d %d ",*(*a),*(*b),*(*c)); . }
funcion2(int *a, int *b, int *c) { . . . }
|
|
« Última modificación: 12 Mayo 2016, 16:00 pm por fafafa01 »
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
 
Desconectado
Mensajes: 3.674
🏴 Libertad!!!!!
|
En funcion1 cuando llamas a funcion dos no tiens que volver a poner el & ni el * funcion2(&*a,& *b,& *c);
a,b,c ya son apuntadores tienes que mandarla a llamar asi. funcion2(a,b,c);
. Creo que no tienes muy claro que es un apuntador y que es una direccion de memoria.
|
|
« Última modificación: 12 Mayo 2016, 16:22 pm por AlbertoBSD »
|
En línea
|
|
|
|
|
|