Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 12 Mayo 2016, 14:56 pm



Título: Funciones adentro de otras con puntero
Publicado por: fafafa01 en 12 Mayo 2016, 14:56 pm
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:

Código:
#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.


Título: Re: Funciones adentro de otras con puntero
Publicado por: AlbertoBSD en 12 Mayo 2016, 15:08 pm
Las funciones deben estar fuera del main.

Código
  1. #include <stdio.h>
  2.  
  3. void funcion1(int *, int *,int *);
  4. void funcion2(int *,int *,int *);
  5.  
  6. void main(void) {
  7.  int a=b=c=0;
  8.  funcion1(&a,&b,&c);
  9. }
  10.  
  11. funcion1 (int *a,int *b, int *c) {
  12. .
  13. .
  14. .
  15. }
  16. funcion2(int *a,int *b,int *c)
  17. .
  18. .
  19. }
  20.  

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

Código
  1. a[0] = 1337;

y cuando retornes al main a ya va a valer 1337.

Saludos


Título: Re: Funciones adentro de otras con puntero
Publicado por: fafafa01 en 12 Mayo 2016, 15:58 pm
ahí corregí el código, me faltaba un paréntesis:

lo pude arreglar asiendo esto:

Código:
#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?

Código:
#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) {
.
.
.
}


Título: Re: Funciones adentro de otras con puntero
Publicado por: AlbertoBSD en 12 Mayo 2016, 16:19 pm
En funcion1 cuando llamas a funcion dos no tiens que volver a poner el & ni el *

Código
  1. funcion2(&*a,& *b,& *c);

a,b,c ya son apuntadores tienes que mandarla a llamar asi.

Código
  1. funcion2(a,b,c);
.

Creo que no tienes muy claro que es un apuntador y que es una direccion de memoria.