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修饰符。 您仍然可以通过函数传递值。

如果我迂腐,我会拒绝。 它可以返回全局变量的 。 该值将是一个瞬时副本,而不是参考。 也就是说,当全球变化时,价值不会改变。

除此之外, 出于各种原因 ,应该首先避免全局变量。