首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

急关于控制台程序的一个小疑点,多谢

2012-01-24 
急!关于控制台程序的一个小问题,谢谢!程序如下:#includestdafx.h #includememory.h #includemalloc.h

急!关于控制台程序的一个小问题,谢谢!
程序如下:

#include   "stdafx.h "
#include   "memory.h "
#include   "malloc.h "

void   put(     int   n   )
{
int   *a;

a   =   (int   *)malloc(   n   *   sizeof(int)   );
memset(   a   ,   12   ,   n   );                                                 //ABC

for(   int   i   =   0   ;   i   <=   2   ;   i++   )
printf(   "a[%d]   =   %d\n "   ,   i   ,   a[i]   );


free(a);

}

main()
{
    put(   3   )   ;

    return   0   ;
}

我想经过上面ABC句的设置后,a中的3个向量都应该是12,但输出后却是什么
-8947455这些,请问这是怎么回事啊?!
谢谢!!

[解决办法]
memset时是从指针基址每次加1个sizeof(char)进行初始化赋值的。
现在的机器一般int型都是4个字节,所以你的int型数组memeset后并不是你想要的值。
另外,memset(a , 12, n);是不对的,第三个参数是以sizeof(char)为单位的。

所以,你对int型数组不能用memset初始化

热点排行