Jay*_*esh 1 c variables static return return-value
在C语言中,static变量的范围通过文件.在以下代码中,函数返回静态变量.
int fun(){
static int i = 10;
return i;
}
int main() {
printf("%d\n", fun());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
并打印输出10.
那么,在C未定义的行为中返回本地静态还是定义明确?
你似乎错过了一个声明的整个逻辑return.
在这个片段中,您实际上是返回(变量的)值,因此,如果没有static存储,代码也可以.
如果您想要返回变量的地址,则需要超出函数的范围.在这种情况下,您需要一个带static存储的变量,以便返回的地址有效(以便可以从调用函数中有意义地使用它),甚至在定义它的函数之外.所以,要么
malloc()或家庭static存储类定义的变量的地址.