用memset进行指针变量的初始化

wangzhihongji 2015-04-28 05:54:45

int _tmain(int argc, _TCHAR* argv[])
{
//initiation
_TCHAR* filename=_T("regenerate_original_picture.txt");
unsigned char data[256];
int packetlen=256;
static unsigned short *ImageData[256][256][128];
//What following below is define of the actual argument in the function of "Creat"
HBITMAP hBitmap;
BITMAPINFOHEADER *bmih=NULL ;
unsigned short * pBits =(unsigned short*)memset( pBits, 0x24, 256*256*2 );//pBits是内容// 一旦create了,就可以直接操控PB IT s这个指针,
//*( PB IT s + xxxx ) = 255; // 对某个像素赋值.


//填装数据
FILE *pfile=_tfopen(filename,_T("rb"));//rb要用_T转换一下
for (int i = 0; i < 256; i++)
for (int j = 0; j < 256; j++)
{
fread(data, 1, packetlen, pfile);
//dosomething //pBits,data,memcpy;
memcpy(ImageData[i][j],data,256);
}
int x=1;//x是标示波段的
for (int v = 0; v < 256; v++)
for (int c = 0; c < 256; c++)
{
memcpy( pBits,ImageData[v][c][x],1);
}


//CreateDIBitmap创建的是设备相关位图句柄 - HBITMAP.
//CreateDIBSection创建的是设备无关位图句柄 - HBITMAP.




//初始化BITMAPINFOHEADER结构的栏位
bmih->biSize = sizeof (BITMAPINFOHEADER) ;
bmih->biWidth = 256 ;
bmih->biHeight = 256 ;
bmih->biPlanes = 1 ;
bmih->biBitCount = 16 ;
bmih->biCompression = BI_RGB ;
bmih->biSizeImage = 0 ;
bmih->biXPelsPerMeter = 0 ;
bmih->biYPelsPerMeter = 0 ;
bmih->biClrUsed = 0 ;
bmih->biClrImportant = 0 ;
//在基本准备後,我们呼叫该函式:
hBitmap = CreateDIBSection (NULL, (BITMAPINFO *) &bmih, 0, (void**)&pBits, NULL, 0) ;

SaveBmp(hBitmap,"bitmap");
return 0;
}


--------------------------------
报错 使用了未初始化pBits变量。。。。可是我初始化过了啊。。。
楼主新手,欢迎指教。
...全文
622 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
苏叔叔 2015-04-28
  • 打赏
  • 举报
回复

unsigned short * pBits =(unsigned short*)memset( pBits, 0x24, 256*256*2 );//pBits是内容// 一旦create了,就可以直接操控PB IT s这个指针,
    //*( PB IT s + xxxx ) = 255;  // 对某个像素赋值. 
pBits都没有分配内存空间,初始化有何用?至于要分配都少空间,你应该清楚
iyomumx 2015-04-28
  • 打赏
  • 举报
回复
先malloc,再memset

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧