我试图创建一个指向结构array
的指针,并将其传递给function
,在这里我将更改结构的值。
有人能解释一下为什么我的代码似乎没有为array
正确分配内存,因为如果我在integer
中存储两个struct
变量,那么编译版本的执行将失败27像素,而如果我只存储一个integer
变量,那么它将工作27像素?
typedef struct Pixel
{
int label;
int area;
}Pixelmap;
int change_pixel(Pixelmap* pixelmap)
{
for (x = 0; x < dimx*dimy*dimz; x++)
{
pixelmap[x].label = x; /* or malloc and strcpy */
pixelmap[x].area = 1;
printf("%i\n",pixelmap[x].label);
}
return 1;
}
int main()
{
Pixelmap *pm;
pm = malloc(dimx*dimy*dimz * sizeof (struct Pixel));
change_pixel(&pm);
printf("End!\n");
free(pm);
return 0;
}
最佳答案
您向change_pixel
传递了指针的地址,但它需要指针本身。应该是:
change_pixel(pm);
我很惊讶编译器没有警告您参数类型不正确。参数声明为
Pixelmap*
,但您传递了Pixelmap**
。关于c - c malloc指向结构数组的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30107938/