void suma(int a, int b, int *res){ a = 10; b = 10; *res = a + b;}int main(void){ int a = 5, b = 9, res; printf("Valor a = %d; Valor b = %d\n", a, b); suma(a,b,&res); printf("Valor a = %d; Valor b = %d\n", a, b); printf("\n El resultado es...: %d\n", res); printf("\n Pulse una tecla para cerrar la aplicacion..."); getchar(); return 0;}
void suma(int *a, int *b, int *res){ *a = 10; *b = 10; *res = *a + *b;}int main(void){ int a = 5, b = 9, res; printf("Valor a = %d; Valor b = %d\n", a, b); suma(&a,&b,&res); printf("Valor a = %d; Valor b = %d\n", a, b); printf("\n El resultado es...: %d\n", res); printf("\n Pulse una tecla para cerrar la aplicacion..."); getchar(); return 0;}
int a = 5, b = 9, res, *pa = &a, *pb = &b;
excelente explicación profe pero también otra diferencia no sería en el uso de memoria total porque si yo tengo una struct con bastantes campos no es lo mismo pasarlo por copia y duplicar la memoria que pasarlo por puntero y trabajar sobre la misma area de memoria que se habia definido antes? .ya se que las PC's actuales tienen memoria para derrochar pero a mi me enseñaron que había que exprimir la memoria al máximo xD
Porque tu código utilizas los *(* contiene el valor de la variable y & contiene la dirección de memoria de la misma)sin declarar y asignar los apuntadores y funciona?.-
Claro, es mucho mas eficiente trabajar directamente con las variables que con una copia, aunque hay algo que debes tener en cuenta, todo depende de lo que necesites hacer, si no vas a realizar modificaciones en los valores, o si los modificas, pero no te afecta en el resultado que debas obtener, entonces puedes usar directamente apuntadores. Si vas a realizar modificaciones en los valores pero por alguna razon te afecta el resultado que necesitas obtener, o necesitas conservar los valores anteriores, entonces necesitas trabajar con una copia si o si.
Cita de: DanielC#Porque tu código utilizas los *(* contiene el valor de la variable y & contiene la dirección de memoria de la misma)sin declarar y asignar los apuntadores y funciona?.-No entendi bien la pregunta, podrias elaborarla o explicarla mejor?