Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/12/2014, 18:12
Virtualforos
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 16 años
Puntos: 1
Respuesta: Procesar columnas de un array multidimensional

Cita:
Iniciado por eferion Ver Mensaje
Debido a la siguiente definición:

Código C:
Ver original
  1. int a[NUM_FIL][NUM_COL]

Entonces, queda claro que a es un puntero doble "int **a". Además, también tenemos que según la definición de "p":

Código C:
Ver original
  1. int (*p)[NUM_COL]

"p" es también un puntero doble.

Entonces:

* a[0] obtiene la posición de memoria donde empieza la primera fila
* &a[0] obtiene un puntero doble
* p = &a[0] asignas un puntero doble a otro puntero doble.

La asignación, como puedes ver, es correcta.

Un saludo.
Suponiendo que NUM_FIL es 5 y NUM_COL es 3.
Código C:
Ver original
  1. int a[5][3], (*p)[3], i;
  2. for(p=&a[0]; p<&a[5]; p++)
  3.     (*p)[i]=0;
Entonces p = &a[0] asigna a "p" la dirección del puntero que apunta a a[0][0].
Luego el ciclo termina cuando "p" apunta a la dirección del puntero que apunta a a[5][0].
Ahora, si "p" es un apuntador a un array de 3 elementos enteros, ¿Cómo puede almacenar una dirección de un puntero?