Funciones adentro de otras con puntero

Iniciado por fafafa01, 12 Mayo 2016, 14:56 PM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

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.

AlbertoBSD

#1
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
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

fafafa01

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

AlbertoBSD

#3
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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW