除了參數傳值和指針傳址,將變量聲明為全局(外部)變量可使其在整個程序中對所有函數可見,從而實現調用函數與被調用函數間的數據交換。這在實際開發中較常見,但會長期佔用內存,尤其對大型數組影響顯著。不過對於大多數程序,內存資源通常足夠。
#include <stdio.h>
void disp(void);
int m[10]; // 定義全局數組
int main() {
int i;
printf("In main before calling\n");
for (i = 0; i < 10; i++) {
m[i] = i;
printf("%3d", m[i]); // 輸出調用前數組值
}
disp(); // 調用子函數
printf("\nIn main after calling\n");
for (i = 0; i < 10; i++)
printf("%3d", m[i]); // 輸出調用後數組值
getch();
return 0;
}
void disp(void) {
int j;
printf("\nIn subfunc after calling\n"); // 子函數中輸出
for (j = 0; j < 10; j++) {
m[j] = m[j] * 10;
printf("%3d", m[j]);
}
}
for (j=0; i<10; j++) 條件判斷使用 i 而非 j,此處已修正為 j < 10disp 直接修改全局數組 m,主函數調用後即可看到修改結果優點: 調用簡潔,無需傳遞參數;多函數共享數據方便。
缺點: 降低函數獨立性與可復用性;增加耦合度;長期佔用內存;多線程環境下需同步機制。
建議:僅在簡單程序或確需全局共享數據時使用;模塊化設計中優先考慮參數傳遞。