繁体   English   中英

在C中返回本地静态

[英]Returning local static in 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 malloc()返回的指针
  • 使用通过static存储类定义的变量的地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM