1、C語言每一次函數(shù)調(diào)用,編譯器都會為這個函數(shù)調(diào)用分配一段空間,這段空間用來存放該函數(shù)中的所有局部變量和調(diào)用其它函數(shù)時需要傳遞的參數(shù)的副本。

連城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運(yùn)維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
2、再說的多一點,一個進(jìn)程(運(yùn)行的程序)可分為若干段:代碼段、數(shù)據(jù)段、堆棧段等,其中函數(shù)所操作的空間(也就是局部變量的空間)就位于堆棧段,所謂函數(shù)分配內(nèi)存大小,實際就是堆棧段指針的變化而已。
3、函數(shù)調(diào)用和返回控制是通過棧來實現(xiàn)的。在函數(shù)調(diào)用時,函數(shù)的參數(shù)和返回地址等信息被先壓入棧中,再跳轉(zhuǎn)到函數(shù)執(zhí)行的入口地址。函數(shù)執(zhí)行完后,再從棧中取出返回地址信息,跳回到原來的函數(shù)調(diào)用處繼續(xù)執(zhí)行。
1、函數(shù)指針指向一個函數(shù)的入口地址,也就是函數(shù)存儲空間的首地址。在C語言中,數(shù)組名代表數(shù)組的首地址,同樣函數(shù)名代表了函數(shù)的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。
2、其他的函數(shù)里面的局部變量,一般被優(yōu)化成對 寄存器的訪問,如果寄存器分配完了,就會保存在棧里面,有函數(shù)調(diào)用的時候,改變指針時留出空間。
3、代碼本身是存儲在內(nèi)存的代碼段中的,而函數(shù)沒有說存儲的概念,函數(shù)調(diào)用時是通過棧來實現(xiàn)的。在函數(shù)體內(nèi)聲明的變量在默認(rèn)情況下都是auto存儲類型 在代碼塊之間傳遞信息的一種方法就是使用外部變量。
4、在棧上分配 同樣由編譯器自動分配和釋放,在函數(shù)執(zhí)行時,函數(shù)內(nèi)部的局部變量都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時,這些存儲單元將則被自動釋放。
5、函數(shù)參數(shù)用值傳遞時,函數(shù)的形參只不過是實參的拷貝而已。也就是說,1中調(diào)用swap函數(shù)時,內(nèi)存中實際上a,b,x,y四個變量都存在,x是a的拷貝,y是b的拷貝,對x,y的值進(jìn)行交換,a,b的值并未交換。
實參和形參是各占獨立存儲空間,函數(shù)調(diào)用過程中,實參向形參拷貝復(fù)制值。實參是個變量,形參也是個變量。如果占用同一片空間的話,編譯時候就不存在實參形參類型不匹配的報錯。參數(shù)傳遞中,形參值的改變不影響實參的值。
形參是肯定的。實參的話,如果把寄存器也看作內(nèi)存的一部分的話,實參也占用內(nèi)存。
無論是不是指針,形參實參都不是占用相同的空間。
網(wǎng)站名稱:c語言函數(shù)調(diào)用內(nèi)存 c語言調(diào)用函數(shù)的簡單例子
網(wǎng)頁URL:http://chinadenli.net/article9/dspgooh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站、標(biāo)簽優(yōu)化、定制網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)