我正在尝试在GDB中调试以下代码行:
p=((uint32 *) tiff_pixels)+image->columns*i;
p i
yeilds 8
p columns
yeilds 32
p image->columns*i
正确地产生了256
p ((uint32 *) tiff_pixels)
收益0x619000008780
所以我希望((uint32 *) tiff_pixels)+image->columns*i
能够获得0x619000008880
,但我会得到0x619000008b80
。
我可能在这里做了一些微不足道的错误/假设,但我似乎无法弄明白。
答案 0 :(得分:2)
你忘了乘以每个像素的大小,即4个字节。
p=((uint32 *) tiff_pixels)+image->columns*i;
您已将tiff_pixels
转换为指向uint32
的指针。每个uint32
是四个字节。因此,如果向指针添加一个,它将指向 next uint32
,这是第一个之后的四个字节。