5
« en: Miércoles 27 de Junio de 2007, 23:12 »
"struct conjunto *A,*B,*C;
es decir, como punteros (y no he echo ningun typedf ni nada de eso)
cuando llame a la funcion yo le pasaria el C que es el que voy a modificar como doble puntero ¿no?"
No, simplemente le pasas a la función el nombre del apuntador a estructura tal cual, C. No necesitas dobles punteros para eso.
La definición de tu función quedaría:
void interseccion(struct conjunto *A, struct conjunto *B, struct conjunto *C)
{
...
}
y la llamada a la misma quedaría:
struct conjunto *A, *B, *C;
...
(Haces que tus apuntadores apunten a estructuras reales ya sea con malloc o de cualquier otra forma)
...
interseccion(A, B, C);
o en caso de estar utilizando estructuras en sí y no apuntadores a estructuras, pero quieres que tu función siga trabajando con apuntadores a estructuras:
struct conjunto A, B, C;
...
interseccion(&A, &B, &C);
No importa si solo vas a escribir en una de las tres estructuras, es una buena práctica de programación utilizar apuntadores a estructuras como parámetros de funciones, aún si solo vas a leer de ellas, ya que de otro modo la estructura completa se copia en el argumento de la función, mientras que con el uso de apuntadores solo se copia su dirección de memoria. El operador & (ampersand) obtiene la dirección de memoria de una variable misma que se puede almacenar en una variable de tipo apuntador.
Los dobles apuntadores o apuntadores a apuntadores pueden ser usados para muchas cosas. Uno de sus usos más comunes puede ser la creación de arreglos de cadenas dinámicos, ya que en sí un arreglo es en escencia un apuntador, y una cadena es un apuntador o un arreglo de caracteres, por lo tanto un arreglo dinámico de cadenas es un apuntador a apuntadores de caracteres.
Los apuntadores a apuntadores no son más que un apuntador que es capaz de contener la dirección de memoria de otros apuntadores, los cuales a su vez pueden guardar direcciones de memoria de algún tipo de variable. Algo como:
struct punto **x;
significa "una variable llamada x que apunta a una dirección de memoria donde se encuentra otra dirección de memoria donde hay una estructura del tipo punto".
Cualquier otra duda exprésala.