[C con Clase] Arrays bidimencionales y arrays de punteros

cesar arias sinatra435 en hotmail.com
Mie Oct 31 23:34:53 CET 2012


Hola a todos, tengo una duda muy grande, espero me puedan ayudar.
Suponiendo que tenemos la siguiente declaración:
int A[4][4];
int *B[4];
Luego reservamos memoria para el array de punteros B con la función malloc().
for(short x=0; x<4; x++)   B[t]=(int *)malloc(4 * sizeof(int));

Desde aquí tengo entendido que para pasar un puntero al array bidimencional como argumento a una función, así:
pares(A);
el parámetro especificado debe ser A[][4], quedando el prototipo de la función como:
void pares( int A[][4]);
La constante 4 se especifica debido a que el compilador necesita saber cuanto espacio de memoria está reservado por cada fila y así saber donde empieza la siguiente fila.
Pero para pasar un puntero a array de punteros como argumento de una función el prototipo debe ser:
void pares( int *B[]);
en donde no se especifica el espacio de memoria de cada fila apuntada por cada puntero.
Mi pregunta es:Si para acceder a B dentro de la función se puede utilizar indexacion como en cualquier array bidimencional(aunque se que un array bidimencional y un array de punteros no es exactamente lo mismo) (ejem: B[1][0]), ¿Como sabe el compilador donde empieza cada "fila" apuntada por cada array?
Ademas tengo otra duda:Como ven aprendo a programar en libros y no tengo quien me guié, me gustaría saber si es necesario saber de es estos temas así en profundidad porque en la universidad en la que estaba no vimos este tema en profundidad, aunque solo alcance a llegar asta segundo semestre. Por supuesto me estoy refiriendo a la carrera de sistemas.
Gracias a todos por sus respuestas, y gracias por dejarme ser parte de esto... 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121031/132cf156/attachment.html>


Más información sobre la lista de distribución Cconclase