最近在寫佇列函式時,在除錯過程中碰到形參的一些問題,作為心得寫在這邊。
1.函式的形參屬於區域性變數,僅在定義的函式內有效,函式返回後失效。
2.當在乙個函式(比如main函式)內呼叫另外乙個函式時,例如:
執行結果:0x10void fun(unsigned char x)
int main(void)
}
雖然main函式呼叫fun函式,但是運算之後沒有返回值,也就是data的值沒有更新,還是0x10。
因此如果要通過乙個函式改變某個變數的值,該函式必須要有返回值。將上述**稍作修改:
執行結果:0x11unsigned char fun(unsigned char x)
int main(void)
}
3.當全域性變數作為形參輸入函式進行運算時,分如下幾種情況:
(1)函式無返回值
運算結果:0x10unsigned char data = 10;
void fun(unsigned char x)
int main(void)
}
由此可見,當全域性變數作為引數輸入函式進行運算時,其本身的值並未改變。
也就是說,全域性變數作為形參輸入函式進行運算時,其作用相當於區域性變數,函式返回後失效。
(2)函式有返回值
運算結果:0x11unsigned char data = 10;
unsigned char fun(unsigned char x)
int main(void)
}
其實,這邊全域性變數data在fun函式內部的作用與例(1)一樣,不過它將計算結果賦值於data,因此列印出來的data值為0x11。
(3)全域性變數直接用於函式內部,不作為形參
運算結果:0x11unsigned char data = 10;
void fun()
int main(void)
}
全域性變數的作用域為整個程式,只要不作為函式形參輸入,它的計算值會實時更新。因此這邊輸出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...