c语言中存储类型的问题
c语言中存储类型的问题为什么c语言中的变量要分为局部变量和全局变量,静态变量和动态变量,如果不分不是更方便吗,一个函数里面的局部变量其他函数也可以访问,自由度不就增加了吗...
c语言中存储类型的问题为什么c语言中的变量要分为局部变量和全局变量,静态变量和动态变量,如果不分不是更方便吗,一个函数里面的局部变量其他函数也可以访问,自由度不就增加了吗?
展开
1个回答
展开全部
刚入门吧,这就像你的家一样,如果你可以不得到别人的允许就进入别人家,别人也进你家,你乐意吗?这涉及到内存私有化,为了保护数据改写完全符合标准,从而避免产生更为严重的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什么时候被收回?为什么变量不是在程序执行完之后才被收回,程序被加载在内存时,所有的变量不是都要空间吗,为什么可以在调用完之后被释放,那下次再调用了。
我不明白程序被加载到内存的过程,和之后的执行过程不明白,能不能细说一下,或者有什么好书可以推荐一下
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询