易截截图软件、单文件、免安装、纯绿色、仅160KB

c中内存分配&变量的存储类别

一在c中分为这几个存储区
1.栈 - 由编译器自动分配释放
2.堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3.全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。- 程序结束释放
4.存储常量的地方。- 程序结束释放
在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的"adgfdf"这样的字符串存放在常量区。
二变量的存储类别:
变量从作用域(空间)角度可以分为全局变量和局部变量。
而从生存期(时间)角度可以分为静态存储方式和动态存储方式
具体包括:
a)         自动的(auto)
b)        静态的(static)
c)        寄存器的(register)
d)        外部的(extern)
静态存储方式:程序运行期间由系统分配固定的存储空间的方式
动态存储方式:程序运行期间根据需要进行动态的分配存储空间方式
内存中供用户使用的存储空间:
1.         程序区
2.         静态存储区
3.         动态存储区
数据存放在后两个存储区中,
全局变量存放在静态存储区中
函数形式参数(调用时)和局部变量(未加static修饰)存放在动态存储区中,在函数调用完后会被系统自动清空。
下面我只介绍前两个:
1)        Auto:
变量如果不加static修饰变量,则都是动态的分配存储空间,系统根据需要进行分配和释放数据所占用的存储空间
2)        Static:
当我们希望局部变量在函数调用完后不被自动的清空而是保留生成的值(即它所占用的存储单元不被释放),这时static的作用就可以在这里的到体现了;
Static修饰全局变量时,改变量的作用域只限于本文件
用stat


相关文档:

C高级使用技巧整理

这里收集一些C语言使用中的高级技巧,这些技巧都是一些基本语法的巧妙使用,但是首次看到这样的用法会感觉眼花缭乱。
一、main函数的封装
在一些库中,为了集成度更高,往往会把main函数封装到库中,而提供给用户使用的是另一个自定义函数,这时候就会用到main函数的封装了,这里使用的是宏定义的技巧:
#define MyMain ......

【转】【C\C++语言入门篇】 深入指针

再上一篇,我们介绍了基本调试。之前也说了,之所以把调试放在前面讲是因为后面的文章基本都会用到调试。观察我们的程序到底发生了什么。让我们能够直接明了的看清楚问题的本质。本篇将深入一点介绍指针这个让无数初学者畏惧的东西。希望大家再看完本篇之后能对指针有新的认识,之后不再惧怕它。觉得它就那么回事。那下面我 ......

【转】【C\C++语言入门篇】 HelloWorld思考

第一篇文章终于落笔了,本文将从思考的角度去重新认识一下Helloworld。在例子之后会提出不同的问题,引导大家去思考每一句乃至每个细节。同时希望能够让大家以后能够以不断思考不断提问的方式去看待自己的程序。我相信大家会发现很多新的东西,好了切入正题。
我们每学一种新的语言基本都会从helloworld开始,基本每种语言 ......

憋了一天,最终写出来了的求最大公约数的程序(C)

前天晚上遇到一题,编写程序求出最大公因数(最大公约数),本能的我想起来了数学中求最大公因式的方法,可是在程序实践上
明显的出了问题,两个数要一个一个的进行拆解,然后找到相同的,这根本是一条死路,思索一夜醒来,突然迸发灵感,可以
用两个数进行取余运算,如果余数为零则最大公因数为被除数,不为零则余数为最 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号