A veces el tema de los punteros en c se puede convertir en una pesadilla, pero lo cierto es que no es tan complicado teniendo las ideas claras.
Para empezar, un array de caracteres que se pasa como argumento a una función, no es un paso de parametro por valor, y si se modifica, al retornar de la función los cambios estarán ahÃÂ.
Y en el caso de un swap de enteros, se pasan los parametros por referencia con el operador &. En una entrada anterior en el codeblog puse un swap de cadenas muy complicado, creo que este es más elegante.
Para empezar, un array de caracteres que se pasa como argumento a una función, no es un paso de parametro por valor, y si se modifica, al retornar de la función los cambios estarán ahÃÂ.
Y en el caso de un swap de enteros, se pasan los parametros por referencia con el operador &. En una entrada anterior en el codeblog puse un swap de cadenas muy complicado, creo que este es más elegante.
/**
* swap.c
* Implementa dos versiónes de la función swap, una para intercambiar enteros
* y la otra para intercambiar arrays
* Compilacion: gcc -o swap swap.c
*
* Pello Xabier Altadill Izura
*/
#include <stdio.h>
void swap(int *px, int *py);
void swaps(char a[], char b[]);
main ()
{
int valor1 = 666;
int valor2 = -34;
char cadena1[] = "Esta es la primera cadena";
char cadena2[] = "Esta es la segunda cadena";
printf("Antes: valor1:%d y valor2: %d
", valor1, valor2);
/* Atención, los parametros deben ser las direcciones */
swap(&valor1, &valor2);
printf("Despues: valor1:%d y valor2: %d
", valor1, valor2);
printf("Antes: cadena1:%s y cadena2: %s
", cadena1, cadena2);
/* Atención, los parametros deben ser las direcciones */
swaps(cadena1, cadena2);
printf("Despues: cadena1:%s y cadena2: %s
", cadena1, cadena2);
}
/* Implementación de SWAP */
void swap (int *px, int *py)
{
int tmp;
tmp = *px;
*px = *py;
*py = tmp;
}
/* Implementacion de swaps */
void swaps(char a[], char b[])
{
int i;
char tmp[2048];
/* En el mismo array vamos asignando */
for (i=0;(tmp[i]=a[i]) != ' ';i++);
/* Y despues le metemos el final */
tmp[i]=' ';
for (i=0;(a[i]=b[i]) != ' ';i++);
/* Y despues le metemos el final */
a[i]=' ';
for (i=0;(b[i]=tmp[i]) != ' ';i++);
/* Y despues le metemos el final */
b[i]=' ';
}
14 comments |
PELMAlink |
www.cialisonlineusa.net Buy cialis asd cialis asda
www.buy-phentermine.biz Cheap phentermine asd Buy phentermine asda
www.order-hydrocodone.us Buy hydrocodone Online asd hydrocodone Without Prescription asda
www.cialischeappills.us Buy cialis asd Cheap cialis asda
www.oxycodone-pharmacy.com Buy oxycodone Online asd oxycodone Online asda
www.levitra-without-prescription.org levitra asd levitra asda
www.freeourkids.com Buy adipex asd adipex asda
www.viagra-tablet.net viagra asd Buy viagra Online asda
www.orderambien.us Buy ambien asd Cheap ambien asda
54