我听说过在当前范围内无法访问的实时变量的概念。我能想到的三个例子是:
ptr = malloc(size * sizeof(ptr_type); ptr = different_ptr;
,
被调用函数内部的静态变量,不再在范围内,或
一个不在外部的全局变量,在一个不再在范围内的文件中。
我有两个问题。我能正确理解这个概念吗?如果我这样做,标准C中还有哪些其他例子?
答案 0 :(得分:2)
是的,您似乎准确理解了这个概念。
嵌套范围:
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);
}
}
}
这不是很好的代码,但有时代码生成器会做一些毫无意义的事情,但使用嵌套的变量声明有点类似。