C语言问题,答案是为什么是A,对在哪里了。。其余选项都错在哪里了

已知函数原型为:structtree*f(intx1,int*x2,structtreex3,structtree*x4)其中tree为已定义过的结构,且有下列变量定义:... 已知函数原型为:
struct tree * f(int x1, int *x2, struct tree x3, struct tree *x4)其中 tree 为已定义过的结构,且有下列变量定义:
struct tree pt, *p; int i;请选择正确的函数调用语句_____。 选择一个答案
A. p = f(i++, (int *)p, pt, &pt);
B. f(i + 1, &i, p, p);
C. &pt = f(10, &i, pt, p);
D. p = f(i + 1, &(i + 2), *p, p);
展开
 我来答
LeoMiaoX
2011-12-19 · TA获得超过288个赞
知道答主
回答量:188
采纳率:100%
帮助的人:63.1万
展开全部
struct tree * f(int x1, int *x2, struct tree x3, struct tree *x4)
此题使用排除法进行解题。
函数参数类型:
x1为整型,不排除。
x2为整型指针,排除D。&(i + 2)没有这个地址。
x3为tree类型,排除B。
x4为tree *类型,不排除。
排除C的原因:&pt地址运算符只能引用,不能用作左值,不能赋值。

所以答案为A
追问
为什么&(I+2)不存在这个地址?&后面只能跟变量吗?
追答
这个地方&(i + 2)没有这个地址是这题目最坑爹的地方了。
这里I的地址已经有了,是int i去申请的。但是i+2是应许出现的,但是i+2的地址&(i + 2)是还没有申请到的。
云飞の孤雁
2011-12-19 · 超过51用户采纳过TA的回答
知道答主
回答量:211
采纳率:0%
帮助的人:168万
展开全部
你看(int x1, int *x2, struct tree x3, struct tree *x4)第一个是整型,那选项第一个也得是整型阿,
第二个试指针,那就在选项选指针啊,BCD的第二项都不是指针,只是指向地址而已,那答案出来啦~
追问
&i虽然不是指针,但它表示地址,指针不也是赋地址的吗?比如写成*P=&i,再把对应位置改为P,意思不一样吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式