| 查看: 2491 | 回復: 13 | ||
[求助]
c語言求助,一個小程序詳細講解
|
||
|
#include typedef struct{int b,p;}A; void f(A c) { int j; c.b+=1; c.p+=2; } main() { int i; A a={1,2}; f(a) ; printf("%d,%d\n",a.b,a.p); getch(); } 請高手講解,此段在wintc中執(zhí)行結果為:1,2 為什么不是2,3?? [ Last edited by 小喬205909 on 2012-2-16 at 23:13 ] |
鐵桿木蟲 (著名寫手)
|
C語言中的參數(shù)傳遞是值傳遞,是單向的,用指針可解決。 #include typedef struct{int b,p;}A; void f(A *c) { int j; (*c).b+=1; (*c).p+=2; } main() { int i; A a={1,2}; f(&a) ; printf("%d,%d\n",a.b,a.p); getch(); |
|
C語言中值參數(shù)是單向的傳遞,即實參將值傳遞給形參,但形參的任何變化都與實參無關。在本題中,函數(shù)f中的參數(shù)是值參數(shù),形參c接受到了實參a的值,在函數(shù)f中,經過運算,c.b和c.p的值分別變?yōu)?,4,但與實參a沒有半毛錢的關系,這就是為什么本題答案仍然是1,2的原因。 當然,若將函數(shù)參數(shù)改為指針就另當別論了,因為函數(shù)參數(shù)是指針的話,實參是將內存地址傳遞給形參,形參的任何變化自然也就是實參的變化。2樓所做得修改就可驗證這一點。 |
金蟲 (文壇精英)
老漢一枚
金蟲 (文壇精英)
老漢一枚
木蟲 (正式寫手)
金蟲 (正式寫手)
木蟲 (小有名氣)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 311求調劑 +9 | 冬十三 2026-03-15 | 10/500 |
|
|---|---|---|---|---|
|
[考研] 考研求調劑 +3 | 橘頌. 2026-03-17 | 4/200 |
|
|
[考研] 277調劑 +5 | 自由煎餅果子 2026-03-16 | 6/300 |
|
|
[考研] 344求調劑 +4 | knight344 2026-03-16 | 4/200 |
|
|
[考研] 286求調劑 +3 | lemonzzn 2026-03-16 | 5/250 |
|
|
[考研] 333求調劑 +3 | 文思客 2026-03-16 | 7/350 |
|
|
[考研] 一志愿985,本科211,0817化學工程與技術319求調劑 +5 | Liwangman 2026-03-15 | 5/250 |
|
|
[考研] 085600材料與化工 求調劑 +13 | enenenhui 2026-03-13 | 14/700 |
|
|
[考研] 求老師收留調劑 +4 | jiang姜66 2026-03-14 | 5/250 |
|
|
[考研] 本科南京大學一志愿川大藥學327 +3 | 麥田耕者 2026-03-14 | 3/150 |
|
|
[考研] 297一志愿上交085600求調劑 +5 | 指尖八千里 2026-03-14 | 5/250 |
|
|
[考研] 331求調劑(0703有機化學 +5 | ZY-05 2026-03-13 | 6/300 |
|
|
[考研] 330求調劑 +3 | ?醬給調劑跪了 2026-03-13 | 3/150 |
|
|
[考研] 招收0805(材料)調劑 +3 | 18595523086 2026-03-13 | 3/150 |
|
|
[考研] 求材料調劑 +5 | 隔壁陳先生 2026-03-12 | 5/250 |
|
|
[考研] 求b區(qū)學校調劑 +3 | 周56 2026-03-11 | 3/150 |
|
|
[考研] 0856化學工程280分求調劑 +4 | shenzxsn 2026-03-11 | 4/200 |
|
|
[考研] 070303一志愿西北大學學碩310找調劑 +3 | d如愿上岸 2026-03-13 | 3/150 |
|
|
[考博] 福州大學楊黃浩課題組招收2026年專業(yè)學位博士研究生,2026.03.20截止 +3 | Xiangyu_ou 2026-03-12 | 3/150 |
|
|
[考博] 2026年博士申請 +3 | QwQwQW10 2026-03-11 | 3/150 |
|