学过图像处理的朋友知道,在处理BMP图片时,用到结构体:
typedef struct tagBITMAPINFO
{
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO;
相信很多初学者不太理解,在读取BMP文件后,后面用到的颜色信息时,用到bmiColors[N](N>1),明明定义的是bmiColors[1]的啊,呵呵,其实这里是C语言中不检查数组越界的一个应用而已,试想各个BMP文件的颜色信息是不一样的,也就是RGBQUAD结构体个数不定的,视具体的文件而定,如果你将该结构体的数目定下来,那么该结构体就没有通用性了,所以这里只是简单的将数目定为1,使RGBQUAD拥有大小可变的数组,当然在读取文件的时候要注意读取的文件颜色表项的大小,给其分配足够的内存空间。