请问C语言高手:关于一个概念问题! 以下叙述错误的是:

以下叙述错误的是:A。一个变量的作用域的开始位置完全取决于变量定义的位置;B。全局变量可以在函数以外的任何部位进行定义;c。局部变量的“生存期”只限于本次函数调用,因此不... 以下叙述错误的是: A。一个变量的作用域的开始位置完全取决于变量定义的位置; B。全局变量可以在函数以外的任何部位进行定义; c。局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用; D。一个变量说明为staic存储类是为了限制其他变异单位的引用! 请问哪个错了,为什么? 展开
 我来答
孝行天下名传9013
2014-08-07 · 超过67用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:117万
展开全部
定义与声明是不一样的这一点要弄清才能弄明白这道题的本质 从狭义上将 需要分配内存空间的声明叫做定义 如int i;(不管它有没有初始值) 不需要分配内存空间的叫声明 如extern int i; A 如果是全局变量的话,他的作用域并不取决于定义的位置,而是声明的位置,例如 int main(){ int i;//这里的i会被认为是局部变量随机复制 } int i = 1; 和下面的区别 int main(){ extern int i;//这里的i会被认为是全局变量为1 } int i = 1; 当然 不管extern的话 变量i的有效范围是从定义开始到文件结束 从另一方面讲extern有着作用域扩展的作用 但实质上作用域还是取决于声明位置而不是定义位置,这选项其实很不严谨 B 应该是对的吧 C 这个也模棱两可,局部变量和静态局部变量有所区别么 如果是静态局部变量的话就会在静态存储区保存 如下面这个 int fun(void){ static int count = 10; // 事实上此赋值语句只在分配内存有效,并没有执行过 return count--; } int count = 1; int main(void) { printf("global\t\tlocal static\n"); for(; count <= 10; ++count) printf("%d\t\t%d\n", count, fun()); return 0; } 程序的运行结果是: global local static 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 这个局部静态变量类似于全局变量,但是静态局部变量有隐藏效果 静态全局变量外部文件不可见(也就是说别的文件extern不到) 静态局部变量当然是别的函数都不可见了,访问不到的 D跟C中说的一样当然是有限制其他编译单元访问的功效,但是还有静态存储的功效 要我说 出了B全尼玛错! 。。。。。额。。。。。 难道这题应该是哪一项是正确的么。。。网上的答案都选B 以下是佐证。。。 http://www.233.com/ncre2/C/moniti/20101009/153323531.html http://zhidao.baidu.com/question/173147361.html http://club.topsage.com/forum.php?mod=viewthread&tid=2504320 http://wenku.baidu.com/view/c90eaa4269eae009581bec0d.html

满意请采纳
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式