我听说过在当前范围内无法访问的实时变量的概念。我能想到的三个例子是:
ptr = malloc(size * sizeof(ptr_type); ptr = different_ptr;
,被调用函数内部不再在作用域内的静态变量,或
不在范围内的文件中的非外部全局变量。
我对此有两个问题。我是否正确理解了这个概念?如果我这样做,标准 C 中还有哪些其他示例?
是的,您似乎准确地理解了这个概念。
嵌套范围:
void pointless(int x)
{
int y = x;
if (y > 0)
{
int x = y + 1; // This x means the argument is out of scope (hidden)
if (x > 10)
{
int y = x - 10; // This y hides the previous y
printf("%d %d\n", x, y);
}
}
}
这不是好的代码,但有时代码生成器会做一些没有意义的事情,但使用嵌套变量声明有点类似。