百分相送,问几句代码的含义,指针方面的
代码如下:用于反色的
unsafe
{
byte *p = (byte *)(void *)Scan;
int nOffset = stride - bmp.Width * 3;
int nWidth = bmp.Width * 3;
for (int i = 0; i < bmp.Height; i++)
{
for (int j = 0; j < nWidth; j++)
{
p[0] = (byte)(255 - p[0]);
p[1] = (byte)(255 - p[1]);
p[2] = (byte)(255 - p[2]);
++p;
}
p += nOffset;
}
bmp.UnlockBits(bmpData);
}
问题如下:
一:int* aa与int *aa的区别,单独的问题,与上面代码无关。
二:结合上面代码,*p为什么声明为byte型呢,byte只有8位,能存下一个完整的地址吗,实际可以的,代码经过执行是正确的,为什么??
三:结合上面代码,*p与下面的p[0],p[1],p[2]的关系,为什么可以写成类型数组的形式,在本例中表示的某个像素点的基色值,代码也经过测试是正确的。