Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/01/2004, 17:59
Avatar de Mithrandir
Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
Tu pregunta me dio curiosidad, especialmente el que nadie supieramos la respuesta a una pregunta que en apariencia suena trivial.

La manera correcta es:
Código:
#include<stdio.h>
#include<conio.h>
void main(){
  int m[10][10];
  int (*p)[10];

  m[4][5] = 123;
  p = &m[0];
  clrscr();
  printf("m[4][5]    --> %i\n", m[4][5]);
  printf("p[4][5]    --> %i\n", p[4][5]);
  printf("(*(p+4))[5]--> %i", (*(p+4))[5]);
  getch();
}
La respuesta la obtuve en:
-Programacion en C. - Bataller/Magdalena. - Ed. Alfaomega - ISBN: 970-15-0665-0 - P.164,165
Cita:
"Hemos de avisar que en la declaracion
int (*P)[10]
Es indispensable especificar la dimension, por que para encontrar la posicion p[4][5] se calcula:
4*10*tamaño de un int
para encontrar la fila, y a esto se le suma
5*tamaño de un int
para encontrar la columna dentro de la fila. Por tanto, para encontrar la fila se necesita conocer su amplitud (cuantas columnas contiene) y eso se dice con la dimension. Esto se debe a la forma en que los arrays se guardan en memoria"....
Espero que aunque fuera de tiempo aún te sirva, o por lo menos resuelva tu duda.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche