在 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/