SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: bleenk en Sábado 19 de Mayo de 2007, 18:03

Título: Punteros, Dobles Punteros, Etc Etc
Publicado por: bleenk en Sábado 19 de Mayo de 2007, 18:03
Buenas gente, estoy haciendo un proyecto para solucionar sudokus y me he quedado un tanto encallao :S

tengo una estructura del tipo:
Código: Text
  1. typedef struct tNode {
  2.   int **sudoku;
  3.   struct tNode *seguent;
  4. } tNode;
  5.  

con un array bidimensional para guardar el tablero y otro campo apuntando al siguiente tablero.
tambien tengo declarada la funcion para reservar la memoria del tablero (mediante memoria dinamica). esta funcion la he conseguido por ahi :P

Código: Text
  1. int ReservaMemoria(int ***sudoku){
  2. .
  3. .
  4. .
  5. }
  6.  

como veis a esa funcion solo le quiero pasar por parametro el campo tablero de la estructura tNode. asi pues...

declaro una variable:
Código: Text
  1. struct tNode a;
  2.  

y lo que me falta es como tiene que ser la llamada a la funcion :S ya lo he probado de muchas maneras y no consigo solucionarlo. a ver si alguien me puede ayudar:

Código: Text
  1. ReservaMemoria(a->.....);
  2.  

muchas gracias de anemano
Título: Re: Punteros, Dobles Punteros, Etc Etc
Publicado por: pater6 en Lunes 21 de Mayo de 2007, 17:17
Tampoco es que sea un experto, pero si declaras
Código: Text
  1.  struct tNode a;
  2.  

no tienes que usar el simbolo -> para acceder a los campos de una estructura. Si no me equivoco, el operador -> se usa cuando la variable de tipo struct lokesea es un puntero, o sea si lo hubieses declarado
Código: Text
  1. struct tNode *a;
  2.  

Si lo que quieres es pasarle el puntero doble por referencia para ser modificado prueba a hacer así la llamada:

Código: Text
  1. ReservaMemoria(&(a.sudoku));//Le pasas las direccion del puntero doble
  2.  

Yo creo que así te podría funcionar. Pruebalo a ver qué tal y si no dilo por aquí para que otros expongan su opinión.