本地变量至少(且最多)存在于函数内。然而,块级作用域变量在块外但在同一函数中的情况下,我能保留并使用它们的地址吗?这段代码有效吗?
#include <stdio.h>
int main()
{
char *f;
if (1)
{
char q[] = "123";
f = q;
}
printf ("%s\n", f);
return 0;
}
事实上,无论是
gcc -ansi -pedantic
还是valgrind都没有对此提出异议,但我能在跨平台和跨编译器中使用它吗?在我看来似乎不行,但有什么工具可以显示错误呢?附注:我到底应该使用
static
吗?这可能是一个适当的解决方案,但在我看来似乎不是线程安全的解决方案?