请教C语言中double类型变量动态分配内存时用什么输入格式

请问C语言中double类型变量动态分配内存时用什么输入格式?
C语言中double类型变量动态分配内存时用什么输入格式?比如: 

double* pData = NULL; 
pData = (double*)malloc(sizeof(double)); 
scanf("%lf",pData); 


我在TC下编译时都没出错,在运行时都出了问题,运行到该行时就终止了,没任何提示。 
而在VC下可以用%lf;但%f不行,会输出错误的答案。 
或者在TC下不能给动态分配的变量这么赋值?可是我又试了一下int类型的,运行是正确的;然后又再试了下float,结果跟double的情况一个样。啥回事哦大虾们

------解决方案--------------------
scanf("%lf", *pData);
------解决方案--------------------
汗楼上的。。

看LZ的程序应该没什么问题,是不是别的地方出问题了。。
------解决方案--------------------
同意2楼的意见
------解决方案--------------------
这是一个很老的问题啦,vc对浮点scanf支持欠佳,改用cin吧!
------解决方案--------------------
编译器的问题, 换g++就没问题了.
------解决方案--------------------
在VC中,%f表示的是float类型,%lf表示的才是double类型,两者表示的大小是不一样的,
C/C++ code

int main(void)
{
    double *pData = NULL;
    pData = (double*)malloc(sizeof(double));
    if ( pData != NULL)
    {
        printf("please input the number.\n");
        scanf("%f\n",pData);
        printf("the numble is %f\n",*(float*)pData);

        free(pData);
    }
        
    return 0;
}

------解决方案--------------------
1.看你程序应该没什么理由在scanf那里停下来,手头没TC编译器试。
2.double型的输出应该是lf,即:
printf("%lf", *pData); 
3. 你这样来尝试下会不会有问题??
double pData;
scanf("%lf", &pData);
printf("%lf\n", pData);

4. 如果上面的没问题,那TC也太。。。

BTW:VC也不一定只可跑C++的,运行C也蛮好。不一定要用TC的,那个太古老了,还是换个编译器吧。
------解决方案--------------------
C/C++ code

int _tmain(int argc, _TCHAR* argv[])
{
    float a;
    scanf("%f", &a);
    printf("a = %f\n", a);
    printf("sizeof(long float)=%d\n , sizeof(long float)=%d\n, sizeof(double)=%d!\n",
        sizeof(float),
        sizeof(long float) ,sizeof(double));
    double a1;
    scanf("%f", &a1);//明显不是输入的数字,因为之定义4个字节,确要使用8个字节
    printf("a = %f\n", a1);
        
    double a2;
    scanf("%lf", &a2);
    printf("a = %f\n", a2); //这里有不稳定因素,输出用f而不是lf就只能输出4个字节,如果不超出还是可以的
    return 0;
}

------解决方案--------------------
试试这个,加点初始化。
另外,%lf与%f确实不同,不过不会在输入时出问题的
C/C++ code

double* pData = NULL; 
pData = (double*)malloc(sizeof(double));
*pData = 0.0;
scanf("%lf", pData);

------解决方案--------------------
scanf:floating point formats not linked 
------------------------------
很多年前的TC的经典BUG。。。。。。程序没加载浮点运算库
在程序一开始加几句废话,比如
double tmp;
dmp = 2.0 * 3.0;
然后就正常了
楼上的 *pData =0.0 应该可以
总之要显式的使用一下浮点数
------解决方案--------------------
VC下double输入格式应为lf
scanf("%lf",pData); 
printf("%f",*pData);

scanf("%lf",pData); 
printf("%lf",*pData);
试过后都可以
------解决方案--------------------
TC的编译器原因吧
之前还遇到个问题在TC下的代码,所有的定义都得在函数的最开头才能执行,在多个变量的定义中间如果有其它代码就会编译不过,在VC下程序就是OK的
而且TC的可视化做的不太好啊
------解决方案--------------------
VC下
scanf("%lf", pData);
TC下,加了初始化,再输入,象16楼的
*pData = 0.0;