关于LPSTR 跟 char 赋值与应用的区别

关于LPSTR 和 char 赋值与应用的区别
今天突然发现一个问题,在BMP格式图像进行图像处理的时候,进行如下操作可以正常赋值:
FILE* file_pointer = fopen("src.bmp","rb");

LPSTR lpSrcData = (LPSTR)malloc(lWidth*lHeight);
BITMAPFILEHEADER bmfHdr;
BITMAPINFOHEADER bmiHdr;
RGBQUAD rgbQ[256];
fread(&bmfHdr,1,sizeof(BITMAPFILEHEADER ),file_pointer);
fread(&bmiHdr,1,sizeof(BITMAPINFOHEADER ),file_pointer);
fread(&rgbQ,1,256*sizeof(RGBQUAD),file_pointer);
fread(lpSrcData,1,sizeof(lWidth*lHeight),file_pointer);

LPSTR lpSrcTemp = lpSrcData;
for(i =0;i<lWidth;i++)
{
    for(j =0;j<lHeight;j++)
   {
      lpSrcTemp = (char*)lpSrcData + i*lWidth +j;
       *lpSrcTemp = 255;// 实际结果是:用UltraEdit 打开图片,数据位FF,即255
    }
}

然而,在下面的测试中
int main()
{
   LPSTR test =(LPSTR) malloc(100);
   LPSTR temp = test;
   temp = test +10;
   *temp =255;
   printf("test = %d ",*temp);//结果为-1.
}

请各位大大解疑答惑!感激不尽!
图像处理 LPSTR 和char

------解决方案--------------------
*temp是一个字符串的地址,255不知道指向哪里去了
------解决方案--------------------
255=0xFF=-1
用无符号表示是255
用有符号表示是-1

对*temp指向的地方始终保存了0xFF
你非要用有符号方式显示出来,当然是-1

你要看存储器的数据
用%X就可以了


------解决方案--------------------
引用:
不过还是有问题,作为条件判断时,if(*temp == 255){ // do something }不会得到执行,因为*temp变现出来的值是-1.


首先分清楚char和unsigned char

之后考虑大小端的问题。
------解决方案--------------------
关于LPSTR 跟 char 赋值与应用的区别