Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2015, 20:51
Virtualforos
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 16 años
Puntos: 1
Limpiar columna en matriz de dos dimensiones

Hola,
tengo esta espina hace más de medio año, ojalá me puedan ayudar a comprender el tema.
No comprendo como es que funciona la siguiente linea:

Código:
(*p)[i] = 0;
comprendida en el siguiente código:

Código:
int mat[num_filas][num_columnas], (*p)[num_columnas], i; 
for(p = &mat[0]; p < &mat[num_filas]; p++) 
(*p)[i] = 0;
Según mi libro, este for limpia la columna i de la matriz. Entiendo que p es un puntero a un array de enteros de tamaño num_columnas. Entiendo que en el for le asigna la primera fila de la matriz al puntero, comprueba que sea menor o igual a la ultima fila, y aumenta p de fila en fila. Y entiendo que en
Código:
(*p)[i] = 0;
la i es la columna a rellenar con 0, pero lo que me confunde es el uso del valor al que apunta p, es decir (*p) con un subíndice. Además en mi libro dice que los paréntesis de (*p) son necesarios ya que sino el compilador interpretaría *(p[i]), lo cual sí que tiene sentido para mi.