2015-12-09 3 views
0

Я пытаюсь таНос 3D-массива, а затем отформатируйте ее, как следует, проблема, я получаю предупреждение о том, что я пытаюсь «разыменование неопределенного значения указателя» в следующей строке: Parque->matriz[i][j][p]='@';Разница в неопределенном значении указателя?

Любая помощь будет оценена.

Мой код выглядит следующим образом:

parque *Parque; 
Parque = (parque *) malloc(sizeof(parque)); 


Parque->matriz = (char***)malloc(x * sizeof(char **)); 


    for (i = 0; i < x; i++) 
    { 
     Parque->matriz[i] = (char**)malloc(y * sizeof(char*)); 

     for (j = 0; j < y; j++) 
     { 
      Parque->matriz[i][j] = (char*)malloc(z*sizeof(char)); 

     } 
    } 

    for (p=0; p<z; p++) 
    { 
     for (j=y-1;j>=0; j--) 
     { 
      for (i=0; i<x; i++) 
      { 
       Parque->matriz[i][j][p]='@'; 

      } 
     } 
    } 

и это определение структуры Парк:

struct _parque{ 
    int dimx; 
    int dimy; 
    int pisos; 
    int entradas; 
    int acessos; 
    int nodes; 
    char ***matriz; 
    int capacidade; 
    int lugares_ocupados; 
}; 

typedef struct _parque parque; 
+0

Что назначено 'Parque'? – dasblinkenlight

+0

Я думаю, что Parque - это какая-то структура, но я бы хотел сначала определить определение этого. – arduic

+0

О, извините, я забыл опубликовать его определение. @dasblinkenlight –

ответ

0

Ваш код кажется правильным, если у вас есть забавный способ итерация по индексам. Возможно, ваш компилятор запутался. Попробуйте:

for (i = 0; i < x; i++) 
{ 
    Parque->matriz[i] = (char**)malloc(y * sizeof(char*)); 

    for (j = 0; j < y; j++) 
    { 
     Parque->matriz[i][j] = (char*)malloc(z*sizeof(char)); 

     for (p = 0; p < z; p++) 
     { 
      Parque->matriz[i][j][p]='@'; 

     } 

    } 
} 

Это будет семантически эквивалентно вам второй набор вложенных циклов.

+0

Это сработало, спасибо. –