自動變數就是指在函式內部定義使用的變數。他只是允許在定義他的函式內部使用它。在函式外的其他任何地方都不能使用的變數。自動變數是區域性變數,即它的區域性是在定義他的函式內部有效。當然這說明自動變數也沒有連結性,因為它也不允許其他的檔案訪問他。由於自動變數在定義他的函式的外面的任何地方都是不可見的,所以允許我們在這個函式外的其他地方或者是其他的函式內部定義同名的變數,他們之間不會發生衝突的。因為他們都有自己的區域性,而且它沒有連結性(即:不允許其他的檔案訪問他的)。來看看自動量的持續性。計算機在執行這個函式的時候,建立併為它分配記憶體,當函式執行完畢返回後,自動變數就會被銷燬。這個過程是透過一個堆疊的機制來實現的。為自動變數分配記憶體就壓棧,而函式返回時就退棧。 /* auto */ #include int main() { int print(); int var,i; for(i=0;i<=10;i++) var=print(); printf("%d ",var); return 0; } int print() { auto int i=0; /* 自動變數 */ i+=1; printf("%d ",i); return i; } /* end */
自動變數就是指在函式內部定義使用的變數。他只是允許在定義他的函式內部使用它。在函式外的其他任何地方都不能使用的變數。自動變數是區域性變數,即它的區域性是在定義他的函式內部有效。當然這說明自動變數也沒有連結性,因為它也不允許其他的檔案訪問他。由於自動變數在定義他的函式的外面的任何地方都是不可見的,所以允許我們在這個函式外的其他地方或者是其他的函式內部定義同名的變數,他們之間不會發生衝突的。因為他們都有自己的區域性,而且它沒有連結性(即:不允許其他的檔案訪問他的)。來看看自動量的持續性。計算機在執行這個函式的時候,建立併為它分配記憶體,當函式執行完畢返回後,自動變數就會被銷燬。這個過程是透過一個堆疊的機制來實現的。為自動變數分配記憶體就壓棧,而函式返回時就退棧。 /* auto */ #include int main() { int print(); int var,i; for(i=0;i<=10;i++) var=print(); printf("%d ",var); return 0; } int print() { auto int i=0; /* 自動變數 */ i+=1; printf("%d ",i); return i; } /* end */