一道C语言的选择题,真心看不懂,求解释,
有以下程序#include<stdio.h>voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c”,*c,d);}main()...
有以下程序
#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);
} 程序运行后的输出结果是( )
A) b,Bb,A B)b,BB,A C)a,BB,a D)a,Ba,B
求解释,为什么选A? 展开
#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);
} 程序运行后的输出结果是( )
A) b,Bb,A B)b,BB,A C)a,BB,a D)a,Ba,B
求解释,为什么选A? 展开
3个回答
展开全部
c是传地址,d是传值,
c里面是b的地址,d=a,
程序结束后,b+1,a不变
c里面是b的地址,d=a,
程序结束后,b+1,a不变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-28
展开全部
*c=*c+1,表示对指针c所指的内容+1,*的优先级高。形式参量c是用实际参数b的地址,所以这个地址里的内容被改成了b,b本身就已经变成字符‘b'。而d传递的是一个参数,且没有返回值,所以d=d+1,仅仅是对d这个变量加1,并不影响实际参数也就是a,所以d=B,a还是A
更多追问追答
追问
b本身就已经变成字符‘b'是什么意思?没有理解。
追答
变量b本来是字符‘a',然后传递了字符’a'的地址,&a,这个是当作函数的参数传递进去的。也就是void fun(char *c,int d)这里c是&a,*c=*c+1,就直接改变了变量b的值,b原来是字符‘a’,现在加一就是字符‘b’
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询