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

[0] Índice de Mensajes

Ir a la versión completa