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.
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
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) {
.
.
.
}
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.