首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言全局變量實現函數間參數傳遞

     編輯:關於C語言

全局變量作為參數傳遞通道

除了參數傳值和指針傳址,將變量聲明為全局(外部)變量可使其在整個程序中對所有函數可見,從而實現調用函數與被調用函數間的數據交換。這在實際開發中較常見,但會長期佔用內存,尤其對大型數組影響顯著。不過對於大多數程序,內存資源通常足夠。

實例:數組通過全局變量在函數間傳遞

#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 < 10
  • 子函數 disp 直接修改全局數組 m,主函數調用後即可看到修改結果
  • 無需通過參數傳遞數組地址,簡化了函數接口

優缺點權衡

優點: 調用簡潔,無需傳遞參數;多函數共享數據方便。
缺點: 降低函數獨立性與可復用性;增加耦合度;長期佔用內存;多線程環境下需同步機制。

建議:僅在簡單程序或確需全局共享數據時使用;模塊化設計中優先考慮參數傳遞。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved