一个C语言的选择题

关于指针赋值的问题1与2... 关于指针赋值的问题1与2 展开
 我来答
百度网友5b2dc8d
2014-01-13
知道答主
回答量:11
采纳率:0%
帮助的人:5.7万
展开全部
来,虽然很伤眼,但是本着哥一向助人为乐的作风,还是替你解答一下:

题一:你选的是A,正确答案是D,那么要弄明白的是float *p的含义,记住,在声明指针的时候,前面的那个* 表示的是我这里声明了一个变量p,这个变量是一个指针,并不是取指针指向值的意思。所以,对于A答案,float *p = 1024,既然p是一个指针,那么给它初始化1024是不对的,它需要的是一个地址值。如果是 float *p; *p = 1024的就靠谱了,因为后一个p的前面的*表示的是取指针指向的值。现在能理解为什么D是对的了吧?

题二:scanf的第二个参数需要的是你要输入的数的地址,如果写成scanf("%lf",&a)应该知道吧,p = &a替换了一下就行了,所以D是正确的。
zdlmgrzm9900
2014-01-14 · TA获得超过113个赞
知道答主
回答量:47
采纳率:0%
帮助的人:46万
展开全部
  1. 指针声明并赋值: float *p=&x ;   (此处 * 是声明,并不是访问它指向的值)

        或者先声明:float *p   ; 再赋值 p=&x ; (&是取地址符号,所以p与&x是等价的)

        因此, A选项,由于*用在了声明中,所以意味着它与地址是等价的  B存在类型错误 C缺

        少*号

  2.  首先c语言中

        %f 对应 float

        %lf 对应 double,所以B排除;

        由于看不清题目问的什么所以这么说吧:  scanf是等待输入功能与printf相对应, 而scanf第二个参数需要的是地址 类型的数据, 如果int a;  则 scanf(%d,&a); 少了&会报错; 如果int *p; 并且 p=&a;  则 可以:scanf(%d,&a)  也可以scanf(%d,p) ; 因为p和&a都是地址;

        PS:如果是printf 的话,那么想输出数值就是printf(%d,*p) 或者printf(%d,a);

                                                想输出地址,则可以:printf(%s,p)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式