A不正确。应该是取决于声明而不是定义的位置。声明引入一个名称,定义引入一个实体,作用域和名称相关,生存期和对象(对象属于一种实体,其它实体还有类型等)相关。
C明显不正确。理由同上,static修饰局部变量为静态存储类,在首次进入函数时初始化一次,之后进入函数时不初始化而保留在上一次离开函数的值。此外,tssuperszy 的说法不确切,应该是在作用域外“不可见”而不是“不可访问”(特别地,在C++中两者有严格区别)。
D也是不正确的。理由如C选项的解释,使用static修饰局部变量不是为了限制其它编译单元的引用,而是为了在函数多次调用之间保存值。
====
[原创回答团]
C错,static局部变量存储在静态区中,结果可以保留到下一次,程序结束时才会销毁
C
用static声明的静态变量可以保存至下一次调用,当然如果是局部变量在函数外仍然是不可访问的。