Dev - C++ - Puntero a un conjunto de arrays_arrays bidimensionales en C

 
Vista:

Puntero a un conjunto de arrays_arrays bidimensionales en C

Publicado por Alexa (7 intervenciones) el 20/06/2020 23:17:36
Tengo una duda en el uso de arrays bidimensionales mediante punteros. En mi libro he visto cuando defino un array bidimensional mediante un puntero a un conjunto de arrays unidimensionales se representa con el paréntesis así:
int (*tabla_1)[nfilas], y cuando se se define como un array de punteros así: int *tabla_1[nfilas]. Cuando quiero definir el tamaño del array usando malloc en el segundo caso se usa :

1
2
3
4
5
int *tabla_1[nfilas];
int i;
for(i=0;i<nfilas;i++){
    tabla_1[i]=(int *)malloc(ncolumnas*sizeof(int));
}

Pero en el primer caso no se como asignar la memoria dinámica,
1
2
3
4
int (*tabla_1)[nfilas];
int i;
for(i=0;i<nfilas;i++){
    *(tabla_1+i)=(int *)malloc(ncolumnas*sizeof(int));}

Intento hacerlo así pero no me salen errores.
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

Puntero a un conjunto de arrays_arrays bidimensionales en C

Publicado por Nacho (116 intervenciones) el 21/06/2020 10:50:57
En el segundo caso estás creando un array de punteros de nfilas

1
int* tabla_2[nfilas].

Luego puedes poner en cada puntero de esa tabla el puntero a una memoria reservada

1
2
tabla_2[0] = (int*)malloc(nfilas* sizeof(int)).
tabla_2[1] = (int*)malloc(nfilas* sizeof(int)).

En el primero parece que quieres definir un puntero al que luego asignarás la cantidad de memoria que sea

1
2
int* tabla_2;
tabla_2 = (int*)malloc((nfilas*10) * sizeof(int));

para acceder a ella luego como quieras.
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

Puntero a un conjunto de arrays_arrays bidimensionales en C

Publicado por Alexa (7 intervenciones) el 22/06/2020 19:33:43
En el primero, quiero definir un puntero a un conjunto de arrays unidimensionales, para generar un array bidimiensional. Y mi libro indica que se define con paréntesis, es decir, de la forma: int (*tabla_1)[nfilas], pero nose como asignar memoria dinamica
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

Puntero a un conjunto de arrays_arrays bidimensionales en C

Publicado por Nacho (116 intervenciones) el 22/06/2020 20:10:26
tabla_2 es una tabla de punteros. tabla_1 es un puntero y primero tienes que dar un valor a ese puntero. Así que es reservar un bloque de memoria al que luego accedes como quieras.
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