全局變量存儲(chǔ)在哪個(gè)區(qū) C語(yǔ)言全局變量和局部變量會(huì)沖突嗎?為什么?
C語(yǔ)言全局變量和局部變量會(huì)沖突嗎?為什么?在C語(yǔ)言中,這取決于如何放置全局變量和局部變量。如果將全局變量和局部變量放在一個(gè)代碼文件中,則會(huì)發(fā)生沖突。所以不明顯,我將編寫(xiě)一個(gè)C程序代碼,如下圖所示:在這
C語(yǔ)言全局變量和局部變量會(huì)沖突嗎?為什么?
在C語(yǔ)言中,這取決于如何放置全局變量和局部變量。如果將全局變量和局部變量放在一個(gè)代碼文件中,則會(huì)發(fā)生沖突。所以不明顯,我將編寫(xiě)一個(gè)C程序代碼,如下圖所示:
在這個(gè)C程序中,我在main函數(shù)外定義了一個(gè)全局變量para,并給出一個(gè)初始值1。在C程序的主函數(shù)中,我定義了一個(gè)變量para,它與主函數(shù)外的變量同名。
這里,C程序主函數(shù)外的變量的生命周期在整個(gè)代碼中是有效的,而主函數(shù)的變量只在主函數(shù)中有效。
也就是說(shuō),當(dāng)您在C程序的主函數(shù)中操作para變量時(shí),實(shí)際上是在主函數(shù)中操作變量,而外部para變量的值仍然是1。在這個(gè)C程序中,main函數(shù)中的para變量隱藏了外部變量para。
因此,學(xué)生在學(xué)習(xí)C語(yǔ)言時(shí),必須注意全局變量被同名局部變量覆蓋的問(wèn)題,還要了解變量的范圍和生命周期。
C語(yǔ)言中全局變量存放在內(nèi)存空間中的哪個(gè)位置?
全局變量存儲(chǔ)在全局靜態(tài)存儲(chǔ)器中。用戶(hù)存儲(chǔ)空間可以分為三個(gè)部分:1。程序區(qū)。程序區(qū)主要用于存儲(chǔ)用戶(hù)編寫(xiě)的源代碼。
2. 靜態(tài)存儲(chǔ)區(qū)全局變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)中。當(dāng)程序開(kāi)始執(zhí)行時(shí),全局變量被分配到存儲(chǔ)區(qū)域,并在程序完成后釋放。在程序執(zhí)行過(guò)程中,它們占用固定的存儲(chǔ)單元,沒(méi)有動(dòng)態(tài)的分配和釋放。
3. 動(dòng)態(tài)存儲(chǔ)動(dòng)態(tài)存儲(chǔ)以下數(shù)據(jù):1)函數(shù)形式參數(shù);2)自動(dòng)變量(無(wú)靜態(tài)聲明的局部變量);3)字段保護(hù)和函數(shù)調(diào)用實(shí)返回地址;