c-取消引用未定义的指针值



我正试图对一个3d数组进行malloc,然后初始化它,如下所示,问题是,我在下面的行中收到一条警告,说我试图"取消引用未定义的指针值":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]='@';
            }
        }
    }

这就是结构parque的定义:

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;

您的代码似乎是正确的,尽管您有一种有趣的迭代索引的方式。也许你的编译器弄糊涂了。请尝试:

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]='@';
        }
    }
}

这在语义上等同于第二组嵌套循环。

相关内容

  • 没有找到相关文章

最新更新