请教个c语言问题 int a,b; 请输出a-b之间的数 怎么弄 谢谢。。

2025-04-01 14:04:51
推荐回答(2个)
回答1:

这个题考的就是函数参数传值和传址(指针或引用)的区别了。
首先要看这个fun函数,第一个参数c是一个指针类型,在main中,把b的地址传过来,在fun中对地址里的值进行修改时,main中的b也会相应改变。
而第二个参数d不是指针类型,当main中调用fun函数,把a传进来,其实是将a赋值给了一个参数变量,也就是说,进了函数后,无论函数对第二个参数进行什么操作,都跟main中的a没有关系了。
所以首先你要明白,传指针(带*的)和传值的区别。
接着就开始解析这道题:
1、mian中调用fun,第一个参数传的是b的地址(&为取址符),第二个参数其实传的是变量a代表的'A'的ASC码值(整数)。
2、进入fun后,*c为'a',*c+1就是讲'a'代表的ASC码+1,也就得到了'b',当然,因为c是指针,所以main中的b也随着变成了'b'。
3、d同理,在fun中,d+1就等于'B',但是不同的是这个不影响main中变量a的值。

4、所以fun中输出为b,B,
5、fun函数结束返回main中,输出变量b和变量a的值为b,A(相信这里你已经动了为什么输出这个了)

回答2:

int i;
for(i=a;i<=b;i++) printf("%d ",i);