關於C語言函式形參 全域性變數 的幾點說明

2021-09-11 16:25:03 字數 1152 閱讀 7029

最近在寫佇列函式時,在除錯過程中碰到形參的一些問題,作為心得寫在這邊。

1.函式的形參屬於區域性變數,僅在定義的函式內有效,函式返回後失效。

2.當在乙個函式(比如main函式)內呼叫另外乙個函式時,例如:

void fun(unsigned char x)

int main(void)

}

執行結果:0x10

雖然main函式呼叫fun函式,但是運算之後沒有返回值,也就是data的值沒有更新,還是0x10。

因此如果要通過乙個函式改變某個變數的值,該函式必須要有返回值。將上述**稍作修改:

unsigned char fun(unsigned char x)

int main(void)

}

執行結果:0x11

3.當全域性變數作為形參輸入函式進行運算時,分如下幾種情況:

(1)函式無返回值

unsigned char data = 10;

void fun(unsigned char x)

int main(void)

}

運算結果:0x10

由此可見,當全域性變數作為引數輸入函式進行運算時,其本身的值並未改變。

也就是說,全域性變數作為形參輸入函式進行運算時,其作用相當於區域性變數,函式返回後失效。

(2)函式有返回值

unsigned char data = 10;

unsigned char fun(unsigned char x)

int main(void)

}

運算結果:0x11

其實,這邊全域性變數data在fun函式內部的作用與例(1)一樣,不過它將計算結果賦值於data,因此列印出來的data值為0x11。

(3)全域性變數直接用於函式內部,不作為形參

unsigned char data = 10;

void fun()

int main(void)

}

運算結果:0x11

全域性變數的作用域為整個程式,只要不作為函式形參輸入,它的計算值會實時更新。因此這邊輸出0x11。

c語言全域性變數

text.件中 ifndef text h define text h ifdef define ext else define ext extern endif 呼叫text.c中的cont整形變數 ext int cont 例如要定義乙個結構體的全域性變數 struct system1 ext ...

javascript 中全域性變數與形參的賦值

定義陣列 123 4567 8var arr1,arr2,arr3 var arr4 建立乙個change函式 123456 function change params return params 將arr4賦值給arr1 arr2 arr3並列印,觀察列印結果 123 4567 8arr1 ar...

javascript 中全域性變數與形參的賦值

定義陣列 123 4567 8var arr1,arr2,arr3 var arr4 建立乙個change函式 123456 function change params return params 將arr4賦值給arr1 arr2 arr3並列印,觀察列印結果 123 4567 8arr1 ar...