取消引用未定义的指针值?
Dereference of undefined pointer value?
我正在尝试 malloc 一个 3d 数组然后初始化它,如下所示,问题是,我收到一条警告说我正在尝试 'dereference an undefined pointer value' 在以下行中: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 的定义:
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]='@';
}
}
}
这在语义上等同于您的第二组嵌套循环。
我正在尝试 malloc 一个 3d 数组然后初始化它,如下所示,问题是,我收到一条警告说我正在尝试 'dereference an undefined pointer value' 在以下行中: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 的定义:
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]='@';
}
}
}
这在语义上等同于您的第二组嵌套循环。