请教一个小疑点:为什么像小弟我这样给一个数组赋值要出错?多谢!

请问一个小问题:为什么像我这样给一个数组赋值要出错?谢谢!!
我是在VC++6。0下面建立的一个控制台程序,想实现部分动态数组的功能,但运行后结果不对,请问怎么回事?

#include   "stdafx.h "
#include   "malloc.h "
#include   "math.h "

main()
{
int   n;

double   *X;
X   =   (double   *)malloc(   4   *   sizeof(double)   );

for(   n   =   0   ;   n   <=   3   ;   n++   )
scanf(   "%f "   ,   &X[n]   );        

for(   n   =   0   ;   n   <=   3   ;   n++   )
printf(   "%f\n "   ,   X[n]   );

                  free(   X   );
return   0;
}



------解决方案--------------------
for( n = 0 ; n <= 3 ; n++ )
scanf( "%f " , (X+n) );

for( n = 0 ; n <= 3 ; n++ )
printf( "%f\n " , *(X+n) );
------解决方案--------------------
f-> float, lf-> double
------解决方案--------------------
scanf( "%d " , &X[n] );

for( n = 0 ; n <= 3 ; n++ )
printf( "%d\n " , X[n] );
改成这样就好了,你输入的类型不匹配。

回复人:likexin() :X已经是指针了,如果SCANF 直接对他进行自假就可以了 真用下标的话也不用家取地址符,因为这个没有保存这段内存的起始地址的指针,这样做的话,还得再声明一个指针来保存起始地址的指针才行。