Código:
char **mVector = (char**)malloc(sizeof(char)*(filas*columnas));
como si fuera una matriz, mas bien lo reconoce como un vector de vectores,
pero como creo entonces una matriz de char dinamicamente?
Código:
int main(int argc, char *argv[])
{
int filas=7;
int columnas=16;
char **mVector = (char**)malloc(sizeof(char)*(filas*columnas));
//memset(mVector, 0, sizeof(char)*(filas*columnas));
for(int r=0;r<7;r++)
for(int s=0; s<16;s++)
mVector[r][s]=0;
for(int rr=0;rr<7;rr++)
for(int ss=0; ss<16;ss++)
cout << mVector[rr][ss]<<endl;//ERROR al leer!!!!!!!!
free(mVector);
system("pause");
return 0;
}
http://foro.elhacker.net/programacion_cc/martiz_de_char_doble_puntero-t333527.0.html
en mi anterior tema me dijeron que debia reservar memoria primero para los vectores supongamos que son 7 en mi caso, y despues sus longitudes osea 16,
pero me confunde esta forma de hacerlo, no hay una mas directa asi como en el codigo mostrado ?
>>
esto fue solucionado asi pero como ya digo, no se porque debe hacerse asi por partes y no todo junto (osea multiplicando filas por columas lo cual da la dimension).
...
Código:
void main()
{
int filas=7;
int columnas=16;
//char** mVector = (char**)malloc(sizeof(char)*(filas*columnas));
char** mVector = (char**)malloc(sizeof(char*)*(filas*columnas));
for(int read=0;read<filas;read++){
mVector[read] = (char*)malloc(sizeof(char)*columnas);
}
//memset(mVector, 0, sizeof(char)*(filas*columnas));
for(int r=0;r<7;r++)
for(int s=0; s<16;s++)
mVector[r][s]='X';
for(int rr=0;rr<7;rr++)
for(int ss=0; ss<16;ss++)
cout << rr << ":" << ss << " " << mVector[rr][ss]<<endl;
free(mVector);
system("pause");
}
si alguien fuera amable de decirme porque
o por deduccion contraria, que es lo que ahce esto entonces
Código:
char** mVector = (char**)malloc(sizeof(char)*(filas*columnas));
porque ami forma de apreciarlo esto calcula la dimension total ...