c的一道題目大家幫幫忙

2022-11-11 00:56:42 字數 1211 閱讀 2407

1樓:

第一次函式呼叫的時候fun(&b,a);

此時引數值為'a'與'a'。

函式定義是,第一個引數為char *,第二個引數為int,所以第二個引數d由char轉換為int的時候對應的ascii碼的值為65.

函式中第一步*c=*c+1;是對指標地址+1操作,所以ascii對應的地址a後面就是b,所以*c列印出來為b。

第二步d=d+1;此時d=66,列印d時以字串列印,所以66對應ascii碼的字母為b。

函式退出後因為第一次函式傳遞第一個變數是對指標操作,所以b的地址已經做了+1操作,所以,函式退出時,b的值已經更新為『b』了,而a的值沒有改變。

即,結果為:b,b,a,b

2樓:cpp門徒

fun(&b,a);

&b傳的是地址,*c=*c+1; 地址裡的值已經被改了,自然不再是'a'了,而是b了。

a傳的是值,傳過去的只是個副本。

3樓:匿名使用者

在函式引數傳遞時字元型變數給函式傳遞的是變數的值,也就是開始時b的地址傳給了指標c,a的ascii碼值傳遞給了d,在fun函式中*c的變化會導致b的值的變化,但是d的值的變化不會影響a的值,所以當執行fun(&b,a)時輸出的是b,b此時b的值是b,而a的值是a,所以最終結果是d

4樓:匿名使用者

&b 表示的是變數b的地址,變數b最終地址是原地址&b+1

tangtang286的回答已經很詳細了!

5樓:匿名使用者

fun(&b,a)= fun(&'a','a')fun->c= &b->*c=b='a'

d=a->d='a'

*c=*c+1->*c='a'+1='b'

d=d+1->d='a'+1='b'

第一個printf列印為,b, b

fun退出,a='a'不變,b='b'(傳遞的是地址)第二個列印為'a', 'b'

6樓:匿名使用者

void fun(char *c,int d)main()

---------------

*c=*c+1 <==>*c=b+1<==>*c='a'+1<==>'b'

d=d+1 <==> d = 'a'+1 <==>'b'

所以結果是 *c = 'b',b = 'b'

a = 'a',b = 'b'

一道數學題,大家幫幫忙

首先 你算錯了 0.99999.0 00000.1 1 不是0.111111 0.99999.1.111111111 你改過的話,要說的是1 3是約等於無限迴圈小數0.33333.0.333333.只不過是無限逼近1 3 用柯西收斂法則是可以證明1 0.999999999.可以把0.99999 看成...

一道物理問題,請大家幫幫忙

第一種情況 電壓表測r1的電壓,第二次是測總電壓,有應為串聯分壓 所以,u2 9 3 6v 串聯電流處處相等,有歐姆定律得r1 r2 3 6 1 2選a u總 9v ur1 3v ur2 6v選c a當開關1閉合,2開啟時,電壓表測的是r1的電壓,當2閉合1開啟時,測的是r1和r2的電壓 電壓比等於...

一道物理問題,請大家幫幫忙

1,乙2,導線1,導線2或導線3,導線3,6v首先推斷電錶型別 如果用電流表,馬上就會短路,所以只能用電壓表再確定量程。電源由3個新蓄電池組成,一個蓄電池電壓2v,所以,電源有6v電壓,所以不能選用3v量程的電壓表,只能選15v電壓表 如果導線1沒有斷,a,b之間由導線直接相連,應該沒有電壓。接a,...