我想知道返回指向本地静态/全局变量的指针的函数是否可以像 C++ 一样在 C 中用作左值,所以我尝试了一下,似乎这是可能的。以下面的简单函数为例,
int* d(int a){
static int* array = NULL;
static int size = 0;
if(a+1 > size){
size = 2*(a+1);
array = realloc(array, size * sizeof(int));
}
if(a == -1){
free(array);
return NULL;
}
return array + a;
}
这是一个简单的动态数组,例如,您可以这样做*d(30) = 2
,但由于每个编译单元只能有一个函数实例,我觉得这不是很有用。
因此,我想问一下,这个概念在 C 中是否有任何有趣的用途。任何真正的应用程序也会很好。