一個函數(shù)如果帶有默認值參數(shù) 在C 中,函數(shù)參數(shù)默認值為什么不允許為局部變量呢?
在C 中,函數(shù)參數(shù)默認值為什么不允許為局部變量呢?因為程序在運行時會打開內(nèi)存空間并初始化程序中定義的變量,函數(shù)在調(diào)用時會為函數(shù)體中定義的參數(shù)和變量打開內(nèi)存空間。具有默認參數(shù)的函數(shù)在為參數(shù)打開空間后,
在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ù)的默認值無效。允許使用局部變量。
java能為方法參數(shù)設置默認參數(shù)嗎?
無法設置默認參數(shù)。因為同時支持“默認參數(shù)”和“方法重載”,所以存在歧義問題。為了簡單起見,Java可能不使用“默認參數(shù)”。使用“方法重載”可以間接達到“默認參數(shù)”的效果,避免代碼太黑。例如,重載方法是間接實現(xiàn)的:public class a{public void DOA(inta)}public void DOA(){這個。doA(0)//這里默認傳入0,類似于此方法重載,實現(xiàn)默認值}