假如有一個全局數組,int a[100],當在函數中對它進行操作,尤其是需要反復計算時,要注意它的狀態。因為全局數組一旦存有數據,就不會隨着某些函數的結束而清空。
舉例:階乘的一個算法中,配置全局數組之后,每次對具體的一個數計算階乘時,都要對數組的部分元素進行計算,而下次再計算另一個數時,就會借用上次的值,因此而發生錯誤。代碼模型如下:
int a[100];/*全局數組*/ void f( )/*計算函數*/ { ....操作數組a.... } main() { do { ...重復計算階乘.. f( ); /*調用函數*/ }while(1); .. }
每次調用函數都要將全局數組還原到最初狀態,可以用memset()函數、