c语言中存储类型的问题

c语言中存储类型的问题为什么c语言中的变量要分为局部变量和全局变量,静态变量和动态变量,如果不分不是更方便吗,一个函数里面的局部变量其他函数也可以访问,自由度不就增加了吗... c语言中存储类型的问题为什么c语言中的变量要分为局部变量和全局变量,静态变量和动态变量,如果不分不是更方便吗,一个函数里面的局部变量其他函数也可以访问,自由度不就增加了吗? 展开
 我来答
虚空的低语
2017-04-30 · 超过23用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:24.2万
展开全部

刚入门吧,这就像你的家一样,如果你可以不得到别人的允许就进入别人家,别人也进你家,你乐意吗?这涉及到内存私有化,为了保护数据改写完全符合标准,从而避免产生更为严重的BUG,例如你从流中获取一个int类型的数据,准备将数据写入变量age中,但是变量age属于另一个类,这时如果流中获取到的是一个字符,比如'a',你直接改写类中的属性,就会造成不可避免的错误。此外,这种私有化操作是为了更好的利用内存空间。

比如下列代码:

#include <stdio.h>
using namespace std;
int a;
int main(){
    {
        int b;
    }
    return 0;
}

变量a会占据相应内存空间,变量b也会占据。但是在{int b}这里的分号结束后,b的内存空间被回收,而a尽管没有使用,任然占用内存空间。如果一个程序都是靠全局变量维持,那么我估计你家的photoshop跑起来需要3根2G内存条。

追问
那变量a什么时候被收回?为什么变量不是在程序执行完之后才被收回,程序被加载在内存时,所有的变量不是都要空间吗,为什么可以在调用完之后被释放,那下次再调用了。
我不明白程序被加载到内存的过程,和之后的执行过程不明白,能不能细说一下,或者有什么好书可以推荐一下
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式