国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

網(wǎng)友解答:

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

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

遞歸、死循環(huán)等操作會發(fā)生溢出也是這個道理,因為不停的向棧中壓入數(shù)據(jù),當(dāng)超出棧的大小時,便發(fā)生了溢出。

是否必須初始化

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

因為聲明變量時,其實也就是申請了一小段內(nèi)存空間,變量所持有的就是該內(nèi)存空間的地址,而C語言并不提供變量的初始化操作,內(nèi)存空間之前很可能是被使用過的,聲明變量后,變量的值就是該內(nèi)存空間中存在的值, 而這個值是不確定的,很有可能會給后面的流程造成干擾。

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

網(wǎng)友解答:

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

標(biāo)簽: