C/Visual C - Sigue la duda

 
Vista:

Sigue la duda

Publicado por Pablaldo (2 intervenciones) el 04/02/2007 11:32:10
Buenas otra vez,

Si la matriz la declaro por ejemplo asi:

int v1[4][2] = { { 3, 4 } , { 5, 7 } , { 0, 2 } , { -1, 9 } };

¿como le paso la direccion de la matriz como argumento a la funcion?
Declarandola asi solo me deja pasarsela a la funcion asi:

void sumarmatrices(int m[4][2], ...)

y creo q si se la paso asi no es pasarle la direccion de la matriz.

¿Como declaro la matriz para poder pasarsela asi... ?
void sumar(int **m1, int **m2 .... ) o asi void sumar(int *m1, int *m2....) ??

A ver si alguien me resuelve la duda.

un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sigue la duda

Publicado por Fran (122 intervenciones) el 05/02/2007 01:45:09
pensalo un poco, si se lo queres pasar asi int ** m lo declaras int ** m jeje, luego para hacer un m[2][4] haces:

m = malloc(2*sizeof(int))
for(i=0;i<4;i++)
m[i] = malloc(4*sizeof(int))

aprende bien el uso de malloc, calloc, realloc y free... recomiendo en vez de usar directamente el 4 y el 2 declarar macros asi

#define FILAS 2
#define COLUMNAS 4

asi es mas lindo y te permite cambiar el codigo en 2 lineas... weno, espero q te sirva, hint: lee punteros!!

suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sigue la duda

Publicado por Tom (619 intervenciones) el 06/02/2007 16:43:46
Esto te funcionará, creo, con cualquier compilador. Con GNU C y, dependiendo de la versión, puede haber otras aproximaciones.

#include <stdio.h>

/* */
void test(int *v, int d1, int d2) {
int i, j;
for(i = 0; i < d1; i++) {
for(j = 0; j < d2; j++) {
printf("%d ", v[i * d2 + j]);
}
printf("\n");
}
}
/* */
int main(int argc, char *argv[]) {
int i;
int v1[4][2] = {{3, 4}, {5, 7}, {0, 2}, {-1, 9}};

for(i = 0; i < 4; i++) {
printf("%d %d\n", v1[i][0], v1[i][1]);
}
printf("\n");
test((int*)v1, 4, 2);

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar