在C中返回本地静态

在C语言中, static变量的范围通过文件。 在以下代码中,函数返回静态变量。

 int fun(){ static int i = 10; return i; } int main() { printf("%d\n", fun()); return 0; } 

并打印输出10。

那么,在C未定义的行为中返回本地静态还是定义明确?

你好像错过了return语句的整个逻辑

在这个片段中,您实际上是返回(变量的) ,因此,如果没有static存储,代码也可以。

如果您想要返回变量的地址 ,则需要超出函数的范围。 在这种情况下,您需要一个具有static存储的变量,以便返回的地址有效(以便可以从调用函数中有意义地使用它),甚至在定义它的函数之外。 所以,要么

  • 你使用分配器函数返回的指针,如malloc()或family
  • 使用用static存储类定义的变量的地址。