返回指向静态(外部函数)数组的指针

J B*_*J B 2 c

以下代码“正确”吗?或者它会是未定义的行为?

// myfile.c
static char x[10][10];

char* my_function() {
    return x[0];
}
Run Code Online (Sandbox Code Playgroud)

my_function正在共享库中使用,所以我认为在文件/编译单元之外访问它的返回值是不安全的(由于static关键字)。

dbu*_*ush 5

该变量在 myfile.c 之外通过该名称x可见,但是因为它驻留在文件范围内,即它具有静态存储持续时间,它的生命周期仍然是整个程序的生命周期。

所以在源文件之间返回一个指向静态数据的指针是有效的。