我正在尝试创建一个指向结构的数组
的指针,并将其传递给一个函数
,我将在其中更改结构的值。
有人能解释一下为什么我的代码似乎没有为 array
正确分配内存,因为如果我存储 编译版本的执行失败 27pixels struct
中的 both integer
变量,而如果我只存储 one integer
变量,它适用于 27pixels ?
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 malloc 指向结构数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30107938/