Tenemos creado en memoria (con malloc) esté array dinámico cuyos elementos son de tipo enteros:
El proceso de creación ha sido... asignamos memoria para un vector de punteros a enteros... algo así como:
int **pam = (int **)malloc(2 * sizeof(int *));
y luego asignamos memoria para cada fila del array:
for (i = 0; i < 2; i++) {
pam[i] = (int *)malloc(2 * sizeof(int));
también hay una variable tipo estructura cuya definición es:
typedef struct matriz
{
int filas;
int columnas;
int **pmatriz;
}tmatriz;
tmatriz var1;
esta estructura tiene los datos de la matriz dinámica que se ha creado.
si tenemos un puntero que apunta a var1...
podemos saber las filas del array haciendo por ejemplo...
printf("%d", pvar1->filas));
pvar1->pmatriz apuntaría a pam
Entonces, si quiero leer datos de la matriz podría hacer un bucle así:
for( i = 0; i < pvar1->filas; i++) {
for(j = 0; j < pvar1->columnas; j++) {
printf("%d", pvar1->pmatriz[i][j]);
Pero si quiero introducir datos nuevos en mi matriz dinamica, a la hora de leer con:
scanf("%d", pvar1->&matriz[i][j]);
El compilador se queja
lo que he hecho es declarar una nueva variable de tipo puntero a puntero a entero y que
contenga la dirección de memoria de pvar1->pmatriz, y luego meter los datos usando esa nueva variable
evitando tener que usar la notación con la estructura. Es decir, algo así:
int **pmat2 = pvar1->pmatriz;
y Luego ya puedo hacer esto
scanf("%d", &pmat2[i][j]);
Mi duda es como hacerlo de la primera forma, es decir así:
scanf("%d", pvar1->&matriz[i][j]);
pero correctamente claro xD
Perdón por el rollo; espero que se entienda algo jaja
Gracias anticipadas!