「在函數參數中傳遞全局變量時,是通過引用還是值傳遞?」全局變量作爲函數調用的參數C
回答
它通過價值傳遞。下面的代碼說明這種情況:
#include <stdio.h>
int global = 5;
void foo(int bar){
bar = 6;
printf("bar = %d\nglobal = %d", bar, global);
}
int main(){
foo(global);
return 0;
}
的輸出是:
巴= 6
全球= 5
在此代碼global
被作爲傳遞一個參數爲foo
,我們稱這個參數爲bar
。因此,在開始時和global
bar
都具有值5。但隨後bar
的值指定爲6,並且由於參數是由值所引用,global
停留在5
要通過引用傳遞變量兩個不同的變量,使用指針:
#include <stdio.h>
int global = 5;
void foo(int *bar){
*bar = 6;
printf("bar = %d\nglobal = %d", *bar, global);
}
int main(){
foo(&global);
return 0;
}
現在的輸出爲:
巴= 6
全球= 6
謝謝。這就是我真正想要的。 –
首先,爲什麼我們需要在函數中傳遞Global變量?如果你不知道,我們可以直接訪問它在程序中的任何地方。
#include <stdio.h>
int x = 10; //global variable
void fun()
{
printf("%d",x); // direct access
}
int main(void) {
fun(); // no argument required
return 0;
}
輸出
10
感謝您的幫助。 :) –
我沒有這樣的回購還沒有投票給你。:) –
@ user367180這是你的帖子,你可以upvote答案或接受答案是好的?是的,你可以只接受一個綠色的答案:) –
本地和全局變量傳遞給函數的值C.如果您需要通過引用傳遞,你需要使用指針。
如何變量/必須被傳遞,取決於功能,不能對變量:
int gMyVar;
void foo(int a); // says "call me by value"
void bar(int *b); // says "call my by reference"
foo
需要傳遞一個int。您必須將其稱爲foo(gMyVar
)。
bar
需要一個指向int的指針。您必須將其稱爲bar(&gMyVar)
。因此,正如其他答案指出的那樣,C總是傳遞一個值,然而,該值可以是變量的值(按值調用),也可以是指向變量(通過引用調用)的指針。
- 1. 作爲全局變量的Python函數參數
- 2. 作爲函數輸入的全局變量而不是參數
- 3. python全局變量作爲參數
- 4. C函數參數爲全局變量設置值?
- 5. 沒有全局變量或函數參數的遞歸調用
- 6. 從函數調用非全局變量?
- 7. 全局變量的函數
- 8. 操作函數中的全局變量
- 9. 爲全局變量(以及函數的參數)賦值R
- 10. C++全局變量和函數
- 11. C函數看不見全局變量
- 12. 調用函數的變量和全局變量
- 13. JavaScript函數參數變量或全局變量
- 14. C++ - 如何從調用函數的變量,而無需使用全局變量
- 15. Python函數全局變量?
- 16. 全局變量和函數
- 17. 全局變量和函數
- 18. 從函數傳遞局部變量變爲全局變量
- 19. 函數參數作爲局部變量名稱的數字
- 20. 全局變量不解析爲參數
- 21. 探測全局變量以調用函數內部函數
- 22. 變量引用作爲函數參數
- 23. 如何使用參數更改函數中的全局變量
- 24. 用局部變量調用一個匿名函數作爲參數
- 25. 發送變量函數/全局變量
- 26. 循環變量作爲異步函數調用中的參數
- 27. 通會話變量作爲參數的onload()函數調用
- 28. 以變量作爲參數的調用函數
- 29. 作爲函數參數的變量名?
- 30. 函數回調函數作爲變量
檢查我的答案我希望你會發現,我測試過的有用的 –
,它顯示按價值傳遞。 –
如果你這樣的事情,它已經創建一個局部變量首先給你的代碼鏈接,我會告訴你如何。 –