读书人

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

发布时间: 2012-01-24 23:11:54 作者: rapoo

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

#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初始化

读书人网 >VC/MFC

热点推荐