我試圖創建一個指向結構的array
的指針,並將它傳遞給function
,我將在其中更改結構的值。c malloc指向結構數組的指針
可能有人請解釋一下我爲什麼我的代碼似乎不能正確地分配爲array
的內存的編譯版本執行失敗的27pixels如果我存儲在struct
都integer
變量,而它的工作原理爲27pixels如果我只專賣店一個integer
變量?
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(&pm);'====>' change_pixel(pm);'把你的編譯器警告提高到最高,你應該被告知不兼容的類型 – WhozCraig
也許'change_pixel'應該重命名'set_pixel',因爲'malloc'分配的內存未初始化。 –