求問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呀
2 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
代碼是給人看的,不是給機器看的,注意格式,整成這一行算什么。。。
fun執行的時候,會把每個變量+1然后打印,所以會先打印bB
執行完后,因為fun的第一個參數是指針,而在fun函數里對指針的引用意味著會改變指針指向的變量的值。也就是說變量b的內容在執行完函數fun后,已經+1了也就是變成‘b’了。所以再打印就是bA
這個要理解c的函數調用時參數傳遞的過程到底發生了什么,c的函數在調用的時候,會把參數變量復制一份(說簡單點是拷貝到棧中,再具體的話就有點麻煩了,自己看書吧。。。),也就是說在函數fun中,參數d雖然值會等于傳入的變量a,但是它是另外一個變量了,所以操作d不會影響a;參數c是指針,它也是另外一個變量,操作c本身不會影響傳入的變量,但是操作c指向的內容(*c)會改變它指向的空間,這個和&b指向的空間是一樣的,所以b的內容會改變。
- 2 回答
- 0 關注
- 817 瀏覽
添加回答
舉報
0/150
提交
取消