elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Limpiar columna en matriz de dos dimensiones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Limpiar columna en matriz de dos dimensiones  (Leído 1,854 veces)
virtualelhacker

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Limpiar columna en matriz de dos dimensiones
« en: 10 Septiembre 2015, 04:57 am »

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), lo cual sí que tiene sentido para mi.


« Última modificación: 10 Septiembre 2015, 05:32 am por virtualelhacker » En línea

someRandomCode

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Limpiar columna en matriz de dos dimensiones
« Respuesta #1 en: 10 Septiembre 2015, 05:04 am »

Como tenes definido p?
p parece ser un int**, de modo tal que p toma la direccion de la variable que apunta al primer elemento del array, *p apuntaria al array mismo, y *p
  • es int


En línea

virtualelhacker

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Limpiar columna en matriz de dos dimensiones
« Respuesta #2 en: 10 Septiembre 2015, 05:39 am »

Osea p tiene almacenada la dirección de un array, el valor al que apunta esa dirección, es a su vez una dirección, la dirección del primer elemento de la fila actual. En
Código:
(*p)[i]
(*p) toma esa dirección y le suma i x el tamaño de cada elemento, en este caso ints. Entendí bien?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines