我是学计算机的,有几道C语言的题目,请高手帮忙解答一下(关于指针的),谢谢!

1、sub(intx,inty,int*z){*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);p... 1、
sub(int x,int y , int *z)
{ *z=y-x;}

main()
{int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}

2、
main()
{int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(-*p1)/(*p2)+7;
printf("a=%d,b=%d\n",a,b);
}

3
main()
{char*p="%d,a=%d,b=%d\n";
int a=111,b=10,c;
c=a+b;
p+=3;
printf(p,c,a,b);
}
展开
 我来答
手机用户82811
2011-04-03
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
c语言中,函数形参为指针,则想函数传递的是实参的地址,对 *指针 的操作会反映到实参上
就像
1题中 sub(10,5,&a); 向形参z传递的是 a的 地址,在 函数中对 *z 的操作就是对a的操作 因此 a,b,c分别为-5,-12,-7;
2题中 判断p1==&m为假 那么a当然就是0了;b=(-*p1)/(*p2)+7也就是b=-4/6+7,b就为7
3题中 p是指向char类型的指针 p+=3后 *p=“a=%d,b=%d\n”; 于是输出 a=121,b=111
指针就是指向一个变量的地址 的变量 而 *指针 就是所指向的变量
250431615
2011-04-03 · TA获得超过635个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:233万
展开全部
没什么可说的啊 1.就是相加 用指针可以把值反回来 15 22 37
2.a应该是个地址 b=6
3.P向下走了3个 输出应该是 a=121,b=111 真正的b没输出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友fa8e132
2011-04-03 · 超过27用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:42.5万
展开全部
第一题,由子函数sub知*z=y-x 可以知道a=5-10=-5 ,b=a-7=-5-7=-12 ,c=b-a=-12-(-5)=-7

第二题
先是判断 a=p1==&m即a=(p1==&m) 由于P1不等于&M 所以a=0;接着是b=(-*p1)/(*p2)+7
由上面可知 *p1=4 , *p2=6则b=-4/6+7=7

第三题 a=121,b=111
为什么?楼主看懂前面两道就知道了! ——
追问
第三题 p=? c=?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
deare1300
2011-04-03
知道答主
回答量:60
采纳率:0%
帮助的人:29.8万
展开全部
1.-5 , -12, -7
2.语句问题
3.a=111,b=10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sywzy
2011-04-03 · TA获得超过342个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:179万
展开全部
指针就是地址,将一个指针指向一个变量的地址后,以后你对指针操作,就是对变量的地址进行才操作,当然也就是对变量进行操作,第一题就很好的说明了这个问题,sub(10,5,&a);是将a的地址传给了指针z,对z进行运算,a的值跟着改变,明白指针的含义,这些题应该没什么问题

第三题有点意思,* p是声明一个字符类型的指针变量p,如楼上所说,p+=3是将b的位置移动了3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式