c - 在 C 中返回局部静态

标签 c variables static return return-value

在 C 语言中,static 变量的作用域贯穿整个文件。 在下面的代码中,函数返回静态变量。

int fun(){
    static int i = 10;
    return i;
}

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

并打印输出10。

那么,在 C 中返回 local static 是未定义的行为还是明确定义的?

最佳答案

您似乎错过了 return 语句的整个逻辑

在此代码段中,您实际上返回了(变量的),因此,如果没有 static 存储,代码也没有问题。

如果您想返回变量的地址,它需要比函数的作用域更持久。在这种情况下,您需要一个具有 static 存储的变量,以便即使在定义它的函数之外,返回的地址也是有效的(以便它可以从调用函数中有意义地使用) .所以,要么

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

关于c - 在 C 中返回局部静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093032/

相关文章:

c - 使用**(双指针)时如何使用free?

c - 打破 switch 语句内的 for 循环

javascript - 为什么在函数内创建同名变量时函数参数没有被覆盖?

c++ - ROS:将回调函数和对象成员绑定(bind)到订阅者节点

python - 使用来自 python subprocess.call 的参数运行 C 代码时出现问题

c - fwrite 在 C 中向文件中写入了错误的字符

c++ - 变长数组 : How to create a buffer with variable size in C++

linux - 在/etc/bash.bashrc和/home/user/.bashrc中添加路径变量有什么区别?

WPF:对 StaticResource 进行动画处理会更新使用该资源的其他控件

c - 如何从autotools确定平台库是静态还是动态?