Programación General > C/C++
Matriz con apuntadores
(1/1)
SkullFlower:
Hola, quisiera ver si me podían ayudar con este código:
--- Código: C ---#include<stdio.h>#include<time.h>void matriz(int (*m)[]);int main(){ int m[3][3]; int i, j; srand(time(NULL)); matriz(m); for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("%d ", m[i][j]); } printf("n"); } return 0;}void matriz(int (*m)[]){ int i, j; for(i=0;i<3;i++){ for(j=0;j<3;j++){ (*m+i)[j]=rand()%10; } }}
Lo que quiero hacer es asignarle a la matriz M valores con rand del 0 al 9 pero usando punteros pero esto es lo que me sale:
Output:
--- Citar ---bash-3.1$ gcc matrix.c
bash-3.1$ ./a.out
4 9 7
0 0 134513424
0 134518552 -1078581720
--- Fin de la cita ---
m0skit0:
Hola. Comentarte un par de cosas antes de ir al tema si me permites:
1) No sirve de nada amontonar el código tal y como lo haces. ¿Qué sales ganando con ello? Nada salvo poca legibilidad. Deja que pase el aire ^_^
2) Tu pregunta no tiene mucho sentido porque un array en C no es más que un puntero con la memoria ya reservada. En C array = puntero, es decir, int[] = int*.
3) Incluye siempre las cabeceras de las librerías que uses. Aquí te falta stdlib (para usar rand).
4) Nombra las funciones acorde con lo hacen.
--- Código: C ---#include <stdio.h>#include <time.h>#include <stdlib.h> void rellenar_matriz(int *m){ int i; for(i = 0; i < 9; i++) { *(m + i) = rand() % 10; }} int main(){ srand(time(NULL)); int m[3][3] = {{-1,-1,-1},{-1,-1,-1},{-1,-1,-1}}; rellenar_matriz((int*)m); int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) { printf("%d ", m[i][j]); } printf("n"); } return 0;}
SkullFlower:
Hola,
Creo que gcc incluye por default stdlib.h, así que por eso no la puse.
Otra cosa, en la linea 19:
--- Código: C ---rellenar_matriz((int*)m);
cual es la diferencia de pasar solo (int*)m en vez de m?
Gracias por la ayuda ^_^
Navegación
Ir a la versión completa