在处理图片的时候看到代码
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); System.IntPtr Scan0 = bmData.Scan0; unsafe { byte* p = (byte*)(void*)Scan0;
这里的(byte*)(void*)是什么意思?
一句话:C++中无类型指针---void *是万能指针。可以转化为其它的类型
注:
所有的指针,在windows系统下都是4个字节 指针自加是和类型有关系,void不属于任何类型 任意两个类型的指针之间都可以使用强制类型转换,但是指针指向的数据是否可以兼容两种类型是另外的问题
把 IntPtr 类型的 Scan0 强制转换成 byte* 类型,也就是说指向 byte 类型的指针。当这样的类型指来指去的时候,按照1字节的长度前进或后退。