Cita:
Iniciado por eferion Debido a la siguiente definición:
Entonces, queda claro que a es un puntero doble "int **a". Además, también tenemos que según la definición de "p":
"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 originalint a[5][3], (*p)[3], i;
for(p=&a[0]; p<&a[5]; p++)
(*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?