成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

C語(yǔ)言中的局部變量為何只能在函數(shù)中使用?必須要初始化嗎?

網(wǎng)友解答: 局部變量為何只能在函數(shù)中使用? 不只是C語(yǔ)言, 就我所知的函數(shù)中的變量都是使用棧來(lái)保存的,棧結(jié)構(gòu)的特點(diǎn)是先進(jìn)后出,當(dāng)函數(shù)執(zhí)行結(jié)束返回后,其棧中所有數(shù)據(jù)均出棧,也就解釋了為什么

網(wǎng)友解答:

局部變量為何只能在函數(shù)中使用?

不只是C語(yǔ)言, 就我所知的函數(shù)中的變量都是使用棧來(lái)保存的,棧結(jié)構(gòu)的特點(diǎn)是先進(jìn)后出,當(dāng)函數(shù)執(zhí)行結(jié)束返回后,其棧中所有數(shù)據(jù)均出棧,也就解釋了為什么只能在函數(shù)中使用,因?yàn)楹瘮?shù)執(zhí)行完畢后,所擁有的局部變量便不存在了。

遞歸、死循環(huán)等操作會(huì)發(fā)生溢出也是這個(gè)道理,因?yàn)椴煌5南驐V袎喝霐?shù)據(jù),當(dāng)超出棧的大小時(shí),便發(fā)生了溢出。

是否必須初始化

C語(yǔ)言并沒有要求變量必須進(jìn)行初始化操作,也就是說(shuō)不進(jìn)行初始化操作在編譯上是沒有錯(cuò)的,但還是建議聲明變量時(shí)進(jìn)行初始化。

因?yàn)槁暶髯兞繒r(shí),其實(shí)也就是申請(qǐng)了一小段內(nèi)存空間,變量所持有的就是該內(nèi)存空間的地址,而C語(yǔ)言并不提供變量的初始化操作,內(nèi)存空間之前很可能是被使用過(guò)的,聲明變量后,變量的值就是該內(nèi)存空間中存在的值, 而這個(gè)值是不確定的,很有可能會(huì)給后面的流程造成干擾。

所以,雖然并沒有硬性要求對(duì)變量進(jìn)行初始化操作,但還是建議聲明變量時(shí)進(jìn)行初始化。

網(wǎng)友解答:

c中任何變量都有自己的作用域,變量只在自己的作用域內(nèi)生效。在函數(shù)體內(nèi)定義的變量只在該函數(shù)體內(nèi)有效。變量可以不初始化,這個(gè)時(shí)候編譯器賦給未初始化變量一個(gè)未定義的數(shù)值,這個(gè)數(shù)值隨機(jī)的,由編譯器決定,也可以理解為編譯器幫你給這個(gè)變量初始化了,只是初始化的值不確定,這時(shí)候這個(gè)數(shù)值也是不可用的、也就是不可以把這個(gè)變量賦值給其他變量或常量,因?yàn)檫@個(gè)值不確定。

標(biāo)簽: