“在函数参数中传递全局变量时,是通过引用还是值传递?”全局变量作为函数调用的参数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. 函数回调函数作为变量
检查我的答案我希望你会发现,我测试过的有用的 –
,它显示按价值传递。 –
如果你这样的事情,它已经创建一个局部变量首先给你的代码链接,我会告诉你如何。 –