若有说明语句:double *p,a;,则能通过scanf语句正确给输入项读入数据的程序段是?

来源:百度知道 编辑:UC知道 时间:2024/05/14 02:53:28
A.*p=&a;scanf("%lf",p); D.p=&a;scanf("%lf",p);
我觉得两个答案都是对的,但是答案为D,不知道问题出在哪了?
(不是说*p=&a与p=&a是等价的么?)

A是错了.
如果是这些写
double a;
double* p=&a;
scanf("%lf",p);
是可以的,p它是一个指向double类型的指针,
*p=&a;
是错误的,你把一个指针赋给了*p,而*p是指针p指向的地址的值即a,是一个int型,不能保存指针的值

p是指针,*p代表p指向地址的值,&a为地址,所以D

它的意思是
A. double **p,a;
*p=&a;
scanf("%lf",*p); //正确
D.double *p,a;
p=&a;
scanf("%lf",p); //正确
所以选D