4 回答

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

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

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

TA貢獻1824條經(jīng)驗 獲得超8個贊
add函數(shù)里面的num是另一個變量,和主函數(shù)中的num不一樣。它們兩都是臨時變量,除了變量名相同沒有什么關(guān)系。
add函數(shù)只是通過參數(shù)的方式獲取了主函數(shù)里面的num的值,也就是給了add中的num初始值,但是并沒有把計算后的值返回給主函數(shù)中的num,所以主函數(shù)中的num并沒有被改變
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 }
//把變量名換一下就明白了,這個變量和num是兩回事,和局部變量作用域沒有半毛錢關(guān)系 void add(int aa) { aa++; //aa自增1 printf("%d\n",aa); //輸出變量aa值為4 } |
- 4 回答
- 0 關(guān)注
- 581 瀏覽
添加回答
舉報