帮忙解释一下c 语言的提啊!谢谢啦!!
若有说明语句:double*P,a;,则能通过scanf语句正确输入项读入数据的程序段是(D)A*p=&a;scanf(“%lf”,p);B*p=&a;scanf(“%f...
若有说明语句:double*P,a;,则能通过scanf语句正确输入项读入数据的程序段是(D)
A *p=&a;scanf(“%lf”,p); B*p=&a;scanf(“%f”,p);
Cp=&a;scanf(“%lf”,*p); Dp=&a;scanf(“%lf”,p); 展开
A *p=&a;scanf(“%lf”,p); B*p=&a;scanf(“%f”,p);
Cp=&a;scanf(“%lf”,*p); Dp=&a;scanf(“%lf”,p); 展开
展开全部
//申明了一个指针类型P和双精度类型的a变量
double *P, a;
//因为P是指针,只存放一个地址值。下面的语句是把变量a的地址赋值给指针。
p=&a;
//*p = &a; 赋值语句是错的,因为 *p 是一个 取 指针所指向地址的值。而不是地址。而&a是 取变量a的地址。故赋值错误。
scanf("%lf", p);
/*因为是double双精度的,所以格式是%lf, scanf是把输入的值存放到一个变量的地址里面,而指针P是一个存放地址的值。故只能这样写。 */
综上所述,答案D 是正确的。
选择A错在前面的赋值语句。
选项B错在%lf长双精度格式。
选项C错在scanf语句里面的*p。
double *P, a;
//因为P是指针,只存放一个地址值。下面的语句是把变量a的地址赋值给指针。
p=&a;
//*p = &a; 赋值语句是错的,因为 *p 是一个 取 指针所指向地址的值。而不是地址。而&a是 取变量a的地址。故赋值错误。
scanf("%lf", p);
/*因为是double双精度的,所以格式是%lf, scanf是把输入的值存放到一个变量的地址里面,而指针P是一个存放地址的值。故只能这样写。 */
综上所述,答案D 是正确的。
选择A错在前面的赋值语句。
选项B错在%lf长双精度格式。
选项C错在scanf语句里面的*p。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询