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

2024-12-03 15:23:58
推荐回答(3个)
回答1:

代码是给人看的,不是给机器看的,注意格式,整成这一行算什么。。。
fun执行的时候,会把每个变量+1然后打印,所以会先打印bB
执行完后,因为fun的第一个参数是指针,而在fun函数里对指针的引用意味着会改变指针指向的变量的值。也就是说变量b的内容在执行完函数fun后,已经+1了也就是变成‘b’了。所以再打印就是bA
这个要理解c的函数调用时参数传递的过程到底发生了什么,c的函数在调用的时候,会把参数变量复制一份(说简单点是拷贝到栈中,再具体的话就有点麻烦了,自己看书吧。。。),也就是说在函数fun中,参数d虽然值会等于传入的变量a,但是它是另外一个变量了,所以操作d不会影响a;参数c是指针,它也是另外一个变量,操作c本身不会影响传入的变量,但是操作c指向的内容(*c)会改变它指向的空间,这个和&b指向的空间是一样的,所以b的内容会改变。

回答2:

开始a='A',b='a'
进入fun函数后,c指针指向b,a的值传给了d,所以*c='a',d='A'
然后做加法,*c='b',d='B'
输出'bB'
退出fun函数后,因为第一个参数是指针,所以b变成了'b',因为第二个参数是值,所以a仍是'A'
再输出就是'bA'了

回答3:

a+1是b A+1是B