元亨利贞t
2019-09-15 07:46
采纳率: 0%
浏览 1.7k

C语言全局变量和静态全局变量和局部变量和静态局部变量在初始化和未初始化时生存期和作用域的具体情况怎么样?

最近看《C程序设计》第五版唐浩强著对静态局部变量有这样一段:

对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初植 0(对数值型交量)或空字符'\0'(对字符变量)。

这里讲静态局部变量在编译赋初值,没有初值自动赋初植 0(对数值型交量)或空字符'\0'(对字符变量)。应该是在编译就分配了空间

在对生存期和作用域解释时又有这样的例子,如图

图片说明

这里讲静态局部变量c的生存期从它所在的函数开始,书上讲“如果一个变量值在某一时刻是存在的,则认为这一时刻属于该变量的生存期,获称该变量在此时刻“存在”“,似乎是说这个静态局部变量从它所在的函数开始才开始在内存分配空间。

是不是赋初值和在内存开辟空间是两个过程,网上有些东西好像是这个意思。还有对全局变量是不是也是编译赋初值?没有初值是不是自动给它赋值(网上好像有这么讲的),那什么时候在内存开辟空间呢(这个图上的生存期从main函数就开始)?

这些可能涉及计算机组成原理,我没学过,希望哪位高手能详细解释下,万分感谢!!!

1条回答 默认 最新

相关推荐 更多相似问题