求问c语言 #include <stdio.h> void fun(char *c,int d)

求问c语言#include<stdio.h>voidfun(char*c,intd){*c=*c+1,d=d+1;printf("%c,%c",*c,d);}main()... 求问c语言 #include <stdio.h> void fun(char *c,int d) {*c=*c+1,d=d+1; printf("%c,%c",*c,d); } main() {char b='a', a='A'; fun(&b,a);printf( "%c,%c\n" ,,b,a ); }这道题的结果为什麽是bBbA呀 展开
 我来答
paniarch
2014-03-20 · TA获得超过288个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:147万
展开全部
代码是给人看的,不是给机器看的,注意格式,整成这一行算什么。。。
fun执行的时候,会把每个变量+1然后打印,所以会先打印bB
执行完后,因为fun的第一个参数是指针,而在fun函数里对指针的引用意味着会改变指针指向的变量的值。也就是说变量b的内容在执行完函数fun后,已经+1了也就是变成‘b’了。所以再打印就是bA
这个要理解c的函数调用时参数传递的过程到底发生了什么,c的函数在调用的时候,会把参数变量复制一份(说简单点是拷贝到栈中,再具体的话就有点麻烦了,自己看书吧。。。),也就是说在函数fun中,参数d虽然值会等于传入的变量a,但是它是另外一个变量了,所以操作d不会影响a;参数c是指针,它也是另外一个变量,操作c本身不会影响传入的变量,但是操作c指向的内容(*c)会改变它指向的空间,这个和&b指向的空间是一样的,所以b的内容会改变。
追问
恩,谢谢老师
我用手机打的,打的时侯分行了,但为什麽到页面上成这样了我也不知道,不过很谢谢你
qwtyb
推荐于2018-02-27 · TA获得超过116个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:123万
展开全部
开始a='A',b='a'
进入fun函数后,c指针指向b,a的值传给了d,所以*c='a',d='A'
然后做加法,*c='b',d='B'
输出'bB'
退出fun函数后,因为第一个参数是指针,所以b变成了'b',因为第二个参数是值,所以a仍是'A'
再输出就是'bA'了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序员王淼
2014-03-20 · 超过11用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:31万
展开全部
a+1是b A+1是B
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式