Punteros y Funciones Rafael Palacios 2005 Sin punteros Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); int main(void) { double x; /* número del cual calculamos el cubo */ double vol; /* resultado del cálculo */ printf("Dame un número: "); Memoria scanf("%lf", &x); vol=Cubo(x); printf("%f\n",vol); return 0; } x ???? vol ???? Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); int main(void) { double x; /* número del cual calculamos el cubo */ double vol; /* resultado del cálculo */ printf("Dame un número: "); Memoria scanf("%lf", &x); vol=Cubo(x); printf("%f\n",vol); return 0; } x vol 7 ???? Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); double Cubo(double a) /* Calcula el cubo de un número int main(void) */ { double x; /* número del cual calculamos el cubo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; vol=Cubo(x); printf("%f\n",vol); return res; } return 0; } Stack Memoria copia x vol 7 ???? a res 7 ???? Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); double Cubo(double a) /* Calcula el cubo de un número int main(void) */ { double x; /* número del cual calculamos el cubo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; vol=Cubo(x); printf("%f\n",vol); return res; } return 0; } Stack Memoria x vol 7 ???? a res 7 343 Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); double Cubo(double a) /* Calcula el cubo de un número int main(void) */ { double x; /* número del cual calculamos el cubo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); vol=Cubo(x); res = a * a * a; 343 printf("%f\n",vol); return res; } return 0; } Stack Memoria x vol 7 ???? a res 7 343 Sin punteros /* Programa para calcular el cubo de un número */ #include <stdio.h> double Cubo(double a); double Cubo(double a) /* Calcula el cubo de un número int main(void) */ { double x; /* número del cual calculamos el cubo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); vol=Cubo(x); res = a * a * a; 343 printf("%f\n",vol); return res; } return 0; } Stack Memoria x vol 7 343 a res 7 343 Con punteros Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); int main(void) { double x; /* número para el cálculo */ double vol; /* resultado del cálculo */ printf("Dame un número: "); Memoria scanf("%lf", &x); Cubo( x, &vol ); printf("%f\n",vol); 2B50 x ???? 3AF6 vol ???? return 0; } No se declaran punteros en el main Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); int main(void) { double x; /* número para el cálculo */ double vol; /* resultado del cálculo */ printf("Dame un número: "); Memoria scanf("%lf", &x); Cubo( x, &vol ); printf("%f\n",vol); 2B50 x 7 3AF6 vol ???? return 0; } No se declaran punteros en el main Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); void Cubo(double a, double *cu) /* Calcula el cubo de un número int main(void) */ { double x; /* número para el cálculo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; Cubo( x, &vol ); printf("%f\n",vol); *cu = res; } return 0; } Stack Memoria 2B50 x 7 3AF6 vol ???? a 7 double cu 3AF6 double* res ???? double Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); void Cubo(double a, double *cu) /* Calcula el cubo de un número int main(void) */ { double x; /* número para el cálculo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; Cubo( x, &vol ); printf("%f\n",vol); *cu = res; } return 0; } Stack Memoria 2B50 x 7 3AF6 vol ???? a 7 cu 3AF6 res ???? Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); void Cubo(double a, double *cu) /* Calcula el cubo de un número int main(void) */ { double x; /* número para el cálculo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; Cubo( x, &vol ); printf("%f\n",vol); *cu = res; } return 0; } Stack Memoria 2B50 x 7 3AF6 vol ???? a 7 cu 3AF6 res 343 Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); void Cubo(double a, double *cu) /* Calcula el cubo de un número int main(void) */ { double x; /* número para el cálculo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; Cubo( x, &vol ); printf("%f\n",vol); *cu = res; } return 0; } Stack Memoria 2B50 x 7 3AF6 vol 343 a 7 cu 3AF6 res 343 Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); void Cubo(double a, double *cu) /* Calcula el cubo de un número int main(void) */ { double x; /* número para el cálculo */ { double vol; /* resultado del cálculo */ double res; /* resultado */ printf("Dame un número: "); scanf("%lf", &x); res = a * a * a; Cubo( x, &vol ); printf("%f\n",vol); *cu = res; } return 0; } Stack Memoria 2B50 x 7 3AF6 vol 343 a 7 cu 3AF6 res 343 Con punteros /* Programa para calcular el cubo */ #include <stdio.h> void Cubo(double a, double *cu); int main(void) { double x; /* número para el cálculo */ double vol; /* resultado del cálculo */ printf("Dame un número: "); scanf("%lf", &x); Cubo( x, &vol ); printf("%f\n",vol); return 0; } Memoria 2B50 x 7 3AF6 vol 343