java局部變量和成員變量 局部變量不應(yīng)該沒有默認值嗎,但為什么這個數(shù)組有默認值?
局部變量不應(yīng)該沒有默認值嗎,但為什么這個數(shù)組有默認值?靜態(tài)變量只有在第一次遇到時才被初始化,然后狀態(tài)保持不變,因此它們可以用來記錄一些狀態(tài)信息;非靜態(tài)局部變量每次調(diào)用此函數(shù)并進入生命周期時都會被初始化
局部變量不應(yīng)該沒有默認值嗎,但為什么這個數(shù)組有默認值?
靜態(tài)變量只有在第一次遇到時才被初始化,然后狀態(tài)保持不變,因此它們可以用來記錄一些狀態(tài)信息;非靜態(tài)局部變量每次調(diào)用此函數(shù)并進入生命周期時都會被初始化?!睘槭裁磿е逻@種差異?”只要明白“這是不同設(shè)計目的造成的差異”。
C語言全局變量和局部變量會沖突嗎?為什么?
在C語言中,這取決于如何放置全局變量和局部變量。如果將全局變量和局部變量放在一個代碼文件中,則會發(fā)生沖突。所以不明顯,我將編寫一個C程序代碼,如下圖所示:
在這個C程序中,我在main函數(shù)外定義了一個全局變量para,并給出一個初始值1。在C程序的主函數(shù)中,我定義了一個變量para,它與主函數(shù)外的變量同名。
這里,C程序主函數(shù)外的變量的生命周期在整個代碼中是有效的,而主函數(shù)的變量只在主函數(shù)中有效。
也就是說,當您在C程序的主函數(shù)中操作para變量時,實際上是在主函數(shù)中操作變量,而外部para變量的值仍然是1。在這個C程序中,main函數(shù)中的para變量隱藏了外部變量para。
因此,學生在學習C語言時,必須注意全局變量被同名局部變量覆蓋的問題,還要了解變量的范圍和生命周期。
在C 中,函數(shù)參數(shù)默認值為什么不允許為局部變量呢?
因為程序在運行時會打開內(nèi)存空間并初始化程序中定義的變量,函數(shù)在調(diào)用時會為函數(shù)體中定義的參數(shù)和變量打開內(nèi)存空間。具有默認參數(shù)的函數(shù)在為參數(shù)打開空間后,將首先為參數(shù)指定默認值。如果沒有要傳遞的參數(shù),則參數(shù)值為默認值,默認值為默認值只有在系統(tǒng)能夠找到確切值的情況下,才可以初始化具有默認值的參數(shù)。局部變量未在所調(diào)用的函數(shù)中定義(參數(shù)在函數(shù)開頭定義),或在定義并用于其他函數(shù)后釋放。因此,系統(tǒng)無法找到一個精確的值來分配給參數(shù),因此函數(shù)參數(shù)具有默認值,局部變量是不允許的。