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); 展开
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); 展开
2个回答
展开全部
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
此题使用排除法进行解题。
函数参数类型:
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)是还没有申请到的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询