C:函数可以返回一个全局变量吗?
假设我有一个带有全局变量的* .c文件(在它有文件范围的意义上是“全局”)和一个函数。 函数可以将该变量作为要在其他翻译单元中使用的值返回吗?
我认为答案是肯定的。 如果没有别的,我假设在C return中运行“copy”语义—返回表达式的值。 但我不确定。
是。 而且你是对的:如果你返回类似int
东西,那么你将返回它当前的副本。 如果你返回一个指针,你将授予他们访问变量本身的权限。
嗯,这样的事情?
AC
int foo = 3; int get_foo() { return foo; }
main.c中
#include #include "ac" int main(void) { printf("%d\n", get_foo()); return 0; }
输出:
3
我认为答案是肯定的。 如果没有别的,我假设在C return中运行“copy”语义—返回表达式的值。 但我不确定。
你是对的。
假设我有一个带有全局变量的* .c文件(在它具有文件范围的意义上是“全局”)
请记住,在.c文件中全局声明变量会使其成为全局句点 。 如果要将其限制为文件范围,请使用static
修饰符。 您仍然可以通过函数传递值。
如果我迂腐,我会拒绝。 它可以返回全局变量的值 。 该值将是一个瞬时副本,而不是参考。 也就是说,当全球变化时,价值不会改变。
除此之外, 出于各种原因 ,应该首先避免全局变量。