怎么用memset()对整数型的数组初始化

如何用memset()对整数型的数组初始化?
#include   <stdio.h>
#include   <string.h>

int   main()
{
  int   a[5];
 
  int   i;
 
  memset(a,1,5*sizeof(int));
 
  for(i   =   0;i   <   5;i++)
  {
    printf( "%d\n ",a[i]);            
  }
 
  getch();
}


这种明显不可以,memset是按照字节初始化的,可我想对整数初始化,咋整?

------解决方案--------------------
哦,你想弄成4个1啊?
那除了自己写循环,C里可能没有办法了。C++中可以使用std::fill。
------解决方案--------------------
不过既使是std::fill,也只不是是别人写好的库函数而已,其底层实现最终很可能仍然是靠for循环来实现的,所以其区别也仅有两点:(1)代码的风格,(2)谁实现(自己实现还是库作者实现)。
不像memset,可能从汇编级作过优化。
------解决方案--------------------
for(i = 0;i < 5;i++)
{
a[i] = 1;
}

------解决方案--------------------
不过,如果你的数组的长度不长,而且编译时就能确定大小,也完全可以这样初始化:

int a[5] = {1, 1, 1, 1, 1};
------解决方案--------------------
定义一个memset32
#define memset32(dst,val,count) \
__asm mov edi,dword ptr[dst] \
__asm mov eax,dword ptr[val] \
__asm mov ecx,dword ptr[count] \
__asm rep stosd