设有定义:double x[1O],*p=x;以下能给数组x下标为6的元素读入数据的正确语句是A.scanf("%f",&x[6]);B.scanf("%lf",*(x+6));C.scanf("%lf",p+6);D.scanf("%lf",p[6]);请看下我的理解是不是对的A:题目中定义的是double.所以是%lf.所以错B:*(x+6)等价于x[6],但是scanf读入的是赋值变量的地址,所以也错.C:p+6是指向x[6]的地址.所以对D:p是指针不是数组,所以不能写成p[6]上面的D是这样理解的么?

问题描述:

设有定义:double x[1O],*p=x;以下能给数组x下标为6的元素读入数据的正确语句是
A.scanf("%f",&x[6]);
B.scanf("%lf",*(x+6));
C.scanf("%lf",p+6);
D.scanf("%lf",p[6]);
请看下我的理解是不是对的
A:题目中定义的是double.所以是%lf.所以错
B:*(x+6)等价于x[6],但是scanf读入的是赋值变量的地址,所以也错.
C:p+6是指向x[6]的地址.所以对
D:p是指针不是数组,所以不能写成p[6]
上面的D是这样理解的么?

D不能这样理解.写法是合法的,只是p[6]是下标为6的元素,不是元素指针,要写成&p[6]就对了.所以错误.其他都分析得对.