急!关于控制台程序的一个小问题,谢谢!
程序如下:
#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初始化