在c語(yǔ)言中指針是一個(gè)unsigned
成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元寧化做網(wǎng)站,已為上家服務(wù),為寧化各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18982081108
類(lèi)型的無(wú)符號(hào)數(shù),其所占內(nèi)存字節(jié)一般是和計(jì)算機(jī)的cpu字長(zhǎng)是一致的,拿32位計(jì)算機(jī)來(lái)說(shuō),指針?biāo)嫉膬?nèi)存空間一般為4個(gè)字節(jié),不管char
*還是int
*抑或是float
*,都是4個(gè)字節(jié)。
程序員可以使用sizeof運(yùn)算符獲取數(shù)據(jù)類(lèi)型或者某個(gè)變量的內(nèi)存所占字節(jié)數(shù)。比如
printf("%d\t%d\t%d\n", sizeof(char *), sizeof(int *), sizeof(float *));
在程序運(yùn)行時(shí),一個(gè)函數(shù)占用一段連續(xù)的內(nèi)存。當(dāng)調(diào)用一個(gè)函數(shù)時(shí),實(shí)際上是跳轉(zhuǎn)到函數(shù)的入口地址,執(zhí)行函數(shù)體的代碼,完成后返回。
函數(shù)指針指向一個(gè)函數(shù)的入口地址,也就是函數(shù)存儲(chǔ)空間的首地址。
在C語(yǔ)言中,數(shù)組名代表數(shù)組的首地址,同樣函數(shù)名代表了函數(shù)的首地址,因此在賦值時(shí),直接將函數(shù)指針指向函數(shù)名就行了。
因此函數(shù)指針調(diào)用vs直接調(diào)用,占用的存儲(chǔ)空間都是一樣的。相當(dāng)于數(shù)組指針和數(shù)組名的關(guān)系,指向的都是同一個(gè)數(shù)組。
局部變量存在函數(shù)體里面,比如轉(zhuǎn)換成8086匯編(示意):
func: 定義變量
push ax
pop ax
ret
main: call func
滿(mǎn)意請(qǐng)采納,謝謝!
一個(gè)函數(shù)有一個(gè)最大的內(nèi)存空間限制
大概是int的10000
內(nèi)存空間和程序本身定義的變量有關(guān)
帶遞歸的程序內(nèi)存空間是
本身定義的變量*遞歸層數(shù)
遞歸層數(shù)(就是從搜索樹(shù)的高度)
看是否會(huì)被調(diào)用
如果沒(méi)有被調(diào)用
那么不會(huì)占內(nèi)存
否則會(huì)在代碼段占用內(nèi)存的。
函數(shù)名是 函數(shù)所占內(nèi)存空間 的首地址,當(dāng)然也占內(nèi)存空間啦!跟數(shù)組名一樣