可以在一個(gè)函數(shù)中定義另一個(gè)函數(shù) 主函數(shù)定義的變量可在被調(diào)函數(shù)中直接使用嗎?
主函數(shù)定義的變量可在被調(diào)函數(shù)中直接使用嗎?在C語言中,main函數(shù)中定義的變量只能在main函數(shù)中使用,因此您必須定義另一個(gè)變量。當(dāng)然,可以將main函數(shù)中定義的變量作為參數(shù)傳遞給被調(diào)用函數(shù)。例如,v
主函數(shù)定義的變量可在被調(diào)函數(shù)中直接使用嗎?
在C語言中,main函數(shù)中定義的變量只能在main函數(shù)中使用,因此您必須定義另一個(gè)變量。當(dāng)然,可以將main函數(shù)中定義的變量作為參數(shù)傳遞給被調(diào)用函數(shù)。例如,void fun(intx){}main(){intnum=9fun(9)}但是如果您想在被調(diào)用的函數(shù)中使用它,這個(gè)
是無效的。
首先,很明顯,子函數(shù)和調(diào)用此函數(shù)的函數(shù)(相對意義上的主函數(shù))是兩個(gè)不同的函數(shù)。
標(biāo)準(zhǔn)C/C不支持本地功能。函數(shù)中定義的對象的名稱具有函數(shù)作用域,有效范圍從定義開始到函數(shù)體的結(jié)尾,與其他函數(shù)中的名稱無關(guān)。即使兩個(gè)函數(shù)是用相同的標(biāo)識符定義的,它們也是兩個(gè)不同的名稱(在C語言中可以保證不同的對象;C引用可能指向同一個(gè)實(shí)體),并且有各自的函數(shù)作用域。如果可以引用在不同函數(shù)中表示同一實(shí)體的名稱,則該名稱只能表示一個(gè)全局對象(或C中兩個(gè)函數(shù)的類/命名空間中的公共對象)。
如果名稱在循環(huán)/語句塊中定義,ISO C90(不支持循環(huán)開頭的定義)從定義開始到函數(shù)體的結(jié)尾,ISO C99/ISO C從定義開始到循環(huán)/語句塊的結(jié)尾。
===
說明:定義變量有三種情況:(1)在函數(shù)的開頭;(2)在函數(shù)內(nèi)的復(fù)合語句中;(3)在函數(shù)外函數(shù)內(nèi)定義的變量只在函數(shù)的作用域內(nèi)有效,即只能在函數(shù)內(nèi)引用,不能在函數(shù)內(nèi)引用在函數(shù)外使用。在復(fù)合語句中定義的變量僅在復(fù)合語句的范圍內(nèi)有效,并且只能在復(fù)合語句中引用。這些變量不能在復(fù)合語句之外使用這些變量稱為局部變量程序的編譯單元是源程序文件。源文件可以包含一個(gè)或多個(gè)函數(shù)。函數(shù)內(nèi)部定義的變量是局部變量,而函數(shù)外部定義的變量稱為外部變量。外部變量是全局變量(也稱為全局變量)。此文件中的其他函數(shù)可以共享全局變量。它的有效范圍從定義的變量的位置到源文件的末尾開始