4 回答

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
這涉及到變量的作用域,局部變量從作用域的聲明到函數(shù)的結(jié)束,變量在子函數(shù)中,其他同名變量將被臨時(shí)屏蔽。就是這樣。在add函數(shù)中,sum In add會(huì)暫時(shí)阻塞sum In main,但是這兩個(gè)sum與變量不一致,可以在內(nèi)存中打印出它們的地址來(lái)證明。在本例中,add sum接受值3,增加到4,然后輸出4,當(dāng)add函數(shù)結(jié)束時(shí),main中的sum恢復(fù),但是它們與變量不一致,所以main中的sum沒(méi)有變化

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
這與局部變量作用域無(wú)關(guān)。
它是參數(shù)方法。
add函數(shù)是通過(guò)傳遞一個(gè)值而不是指針來(lái)調(diào)用的。
因此,在add中更改num的值不會(huì)影響主函數(shù)中的num值。

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
不同的函數(shù)使用相同的變量名,它們表示不同的數(shù)據(jù),分配不同的內(nèi)存,互不干擾,也不會(huì)引起混淆。add函數(shù)的num在函數(shù)執(zhí)行后釋放內(nèi)存。打印函數(shù)打印主函數(shù)的編號(hào)。如果將打印函數(shù)放在add函數(shù)中,則打印值為4

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
add函數(shù)里面的num是另一個(gè)變量,和主函數(shù)中的num不一樣。它們兩都是臨時(shí)變量,除了變量名相同沒(méi)有什么關(guān)系。
add函數(shù)只是通過(guò)參數(shù)的方式獲取了主函數(shù)里面的num的值,也就是給了add中的num初始值,但是并沒(méi)有把計(jì)算后的值返回給主函數(shù)中的num,所以主函數(shù)中的num并沒(méi)有被改變
1 2 3 4 5 6 7 8 9 10 11 12 13 | main() { int num=3; add(num); //調(diào)用add()函數(shù) printf("%d\n",num); //輸出變量num值為3 }
//把變量名換一下就明白了,這個(gè)變量和num是兩回事,和局部變量作用域沒(méi)有半毛錢(qián)關(guān)系 void add(int aa) { aa++; //aa自增1 printf("%d\n",aa); //輸出變量aa值為4 } |
- 4 回答
- 0 關(guān)注
- 555 瀏覽
添加回答
舉報(bào)