第一题的正确答案是A.
变量b传指针给函数fun,在fun函数内,它的ascii码加1,本来是'a',变成'b'。(因为 'a' + 1 == 'b')
变量a传值给fun,在fun内,它的ascii码加1, 值由 'A', 变成 'B'。
在fun函数内的printf会输出 bB
因为变量b传指针,所以它在fun内的操作改变它在外面的值,它在main内也变成'b'.
变量a只是传值,虽然在fun内变成'B',但不影响main内的变量a,所以a的值依然是'A'
因此main内的printf输出 bA
所以最后输出是 b,B,b,A ,答案是A
第二题中 r是数组a的首地址,也就是a[0]的地址。
r传值给函数f, 这个首地址的值 + 3,指向的是a[3],因此 *p = 4。
因为r是传值给f, 所以在f内+3不影响main内r的值, r仍然指向a[0], 所以 *r = 1
因此答案是 4,1
追问谢谢我看懂你的回答了~那第二题为什么不是1.4
追答因为先执行 函数f,所以先输出4,
f返回后,main输出,输出1
追问哦哦原来如此~我知道啦~谢谢你的耐心回答
追答如果对你有所帮助,请采纳答案。