[英]Functions returning pointers to local static/global variables as lvalues in 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.