關於變數使用(全域變數、區域變數、涵式參數)

int i;
int main(){

        return 0;
}
全域變數
以上程式所宣告的i為全域變數,意即在命名每個涵式時,i已經是一個涵式名稱,不可以取相同稱,但若在涵式中在宣告一個int i(區域變數),則為不同變數,是可以使用的,而且兩個是不相關的。
如果可以的話,新手盡量要去避免使用全域變數,避免造成程式上的問題。

int main(){
        int i;
        return 0;
}
區域變數
上述程式所宣告的i為區域變數,僅在涵式中可以辨認此變數名稱。
有一個特點是在大括弧中可以命名為i,但是在不同的大括弧中可命名相同為int i的,但個人不建議,因為可能會影響到你所期待的結果。

int example(int i){
           return 0;
}
涵式參數
上述程式所宣告的i為涵式參數,基本效果上與區域變數非常相似。

所以使用變數上有兩個重要的規則:
1.該變數為全域變數。
2.被包括在此變數名稱的區塊{}範圍內。

以下為參考範例:
#include<stdio.h>
int i = 1;//全域變數

int main(){
printf("%d",i);//這裡的i會是全域變數所宣告的i=1,因為資料是往前找的。
int i = 2;
printf("%d",i);//這裡的則是第一組大括弧{}區域變數所宣告的i,但它也是會往前找,但會找最近所宣告的i=2。
{
printf("%d",i);//往前找最近的i,所以為i=2。
int i = 3;
printf("%d",i);//往前找最近的i,所以為i=3。
}
printf("%d",i);//只要沒有在{}內就不會找到,所以在往前找最近的i,就是在同一個大括弧裡所宣告的i=2。
return 0;
}

用紅框表示範圍

留言