被調用的函數是否可以從調用函數的作用域中更改變量的值?一個函數可以從調用函數的作用域中改變變量的值嗎?
-4
A
回答
1
#include <stdio.h>
void funcA(int* a)
{
*a = 2;
}
void funcB(void)
{
int b = 1;
printf("-> %d\n", b); /* -> 1 */
funcA(&b);
printf("-> %d\n", b); /* -> 2 */
}
int main(void)
{
funcB();
return 0;
}
+0
傳遞'b'的*地址*作爲變量。你的'funcA()'不會改變它。 –
0
那麼這將取決於你如何調用該函數。如果您使用按值調用的方法,那麼它不能更改原始值,但如果您使用調用引用(指針)方法,則它可以更改提供的參數表示您想要更改的相同變量。
+3
Nit pick:僅限C * *按價值調用。通過引用調用必須使用指針*模擬*。 – Jens
+1
但即使這不會改變從調用者傳遞的實際**指針變量**的值。被調用的函數可以使用指針變量的值來改變其他的東西,但是它不能改變調用者變量的值。除非指針指向自己。 –
相關問題
- 1. 函數調用,變量的作用域
- 2. jQuery的 - 從另一個函數變量調用函數變量
- 3. 從另一個函數訪問函數的作用域變量
- 4. Python 3從另一個函數中改變函數的變量
- 5. 在PHP中可以調用變量作爲函數嗎?
- 6. unix中函數變量的作用域
- 7. VBScript函數中的變量作用域
- 8. 從一個變量調用函數(PHP)
- 9. 是否可以使用外部變量從另一個函數調用函數?
- 10. 當變量值改變時調用一個函數
- 11. 從一個函數調用變量到另一個函數
- 12. 從一個函數調用變量到另一個函數(Python)
- 13. 從另一個函數改變函數內部的變量
- 14. 可以通過變量值調用匿名函數嗎?
- 15. 從變量調用函數
- 16. 從HTML調用js函數時可以訪問javascript變量嗎?
- 17. 從另一個函數的作用域訪問變量?
- 18. 從angularjs模板變量中調用隔離作用域函數
- 19. 從函數外調用變量變量
- 20. 一個函數改變另一個函數的局部變量?
- 21. lambda函數和變量的作用域
- 22. 如何改變一個變量的值來調用一個函數?
- 23. 從Python中的函數調用「變量」?
- 24. JavaScript函數改變變量的作用域
- 25. 可以返回函數作用域靜態變量的引用嗎?
- 26. 從一個函數使用一個變量的函數外
- 27. 從一個函數傳遞操作變量以用於另一個函數
- 28. 我可以使用變量的值作爲函數的參數名稱嗎?
- 29. 調用.getJSON函數以外的變量?
- 30. Jquery調用函數以外的變量
你是什麼意思?什麼變量?無意中或通過設計更改這些變量?變量作爲參數或其他變量傳遞?你能不能展示一些代碼,最好是一個[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve),它顯示你的意思?另請[請閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –
好吧,簡單的答案是「是的」。 –
你所說的功能,實際上叫做「範圍」。你可以在這裏找到一個簡略的解釋:http://www.tutorialspoint.com/cprogramming/c_scope_rules.htm –