- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c 程序的存储结构(Storage structure of C program)
c 程序的存储结构(Storage structure of C program) void (* singal (char * prt, float f)) (int); 程序存储空间c 2010 - 12 - 07 10: 16: 17 阅读82 评论0 字号: 大中小 订阅 一、c程序存储空间布局 c程序一直由下列部分组成: 1) 正文段 - - cpu执行的机器指令部分; 一个程序只有一个副本; 只读, 防止程序由于意外事故而修改自身指令; 2) 初始化数据段 (数据段) - - 在程序中所有赋了初值的全局变量, 存放在这里. 3) 非初始化数据段 (bss段) - - 在程序中没有初始化的全局变量; 内核将此段初始化为0. 4) 栈 - - 增长方向: 自顶向下增长; 自动变量以及每次函数调用时所需要保存的信息 (返回地址; 环境信息). 5) 堆 - - 动态存储分. | ----------- | | | | ----------- | | 栈 | | ----------- | | | | | \ | / | | | | | | / | \ | | | | | ----------- | | 堆 | | ----------- | | 未初始化 | | ----------- | | 初始化 | | ----------- | | 正文段 | | ----------- | 二、 面向过程程序设计中的static 1. 全局静态变量 在全局变量之前加上关键字static, 全局变量就被定义成为一个全局静态变量. 1) 内存中的位置: 静态存储区 (静态存储区在整个程序运行期间都存在) 2) 初始化: 未经初始化的全局静态变量会被程序自动初始化为0 (自动对象的值是任意的, 除非他被显示初始化) 3) 作用域: 全局静态变量在声明他的文件之外是不可见的.准确地讲从定义之处开始到文件结尾. 看下面关于作用域的程序: / / teststatic1.c void display (); extern int n; int main () { n = 20; printf (% d n , n); display (); return 0; } / / teststatic2.c static int n; / / 定义全局静态变量, 自动初始化为0, 仅在本文件中 可见 void display () { n + +; printf (% d n , n); } 文件分别编译通过, 但link的时候teststatic1.c中的变量n找不到定义, 产生错误.定义全局静态变量的好处: 1 不会被其他文件所访问, 修改 2 其他文件中可以使用相同名字的变量, 不会发生冲突. 2. 局部静态变量 在局部变量之前加上关键字static, 局部变量就被定义成为一个局部静态变量. 1) 内存中的位置: 静态存储区 2) 初始化: 未经初始化的全局静态变量会被程序自动初始化为0 (自动对象的值是任意的, 除非他被显示初始化) 3) 作用域: 作用域仍为局部作用域, 当定义它的函数或者语句块结束的时候, 作用域随之结束. 注: 当static用来修饰局部变量的时候, 它就改变了局部变量的存储位置, 从原来的栈中存放改为静态存储区.但是局部静态变量在离开作用域之后, 并没有被销毁, 而是仍然驻留在内存当中, 直到程序结束, 只不过我们不能再对他进行访问. 当static用来修饰全局变量的时候, 它就改变了全局变量的作用域 (在声明他的文件之外是不可见的), 但是没有改变它的存放位置, 还是在静 态存储区中. 3. 静态函数 在函数的返回类型前加上关键字static, 函数就被定义成为静态函数.函数的定义和声明默认情况下是extern的, 但静态函数只是在声明他的文件当中可见, 不能被其他文件所用. 例如: / / teststatic1.c void display (); 静态staticdis(); 国际main() { display(); staticdis(); 收益率0; } / / teststatic2 C。 无效display() { staticdis(); printf(“display()一直被称为“\n”); } 静态staticdis() { printf(“staticdis()一直被称为“\n”); } 文件分别编译通过,但是连接的时候找不到函数staticdis()的定义,产生错误。 定义静态函数的好处: 1 其他文件中可以定义相同名字的函数,不会发生冲突 2 静态函数不能被其他文件所用。 存储说明符汽车,登记,extern,静态的,对应两种存储期:自动存储期和静态存储期。 汽车和登记对应
您可能关注的文档
- 2015年最流行的男孩女孩英文名字推荐大全(Boys and girls in 2015 the most popular English recommended name Daquan).doc
- 2015高考物理一轮复习课时跟踪检测(十二)牛顿运动定律的综合应用(二)试题及完整解析答案-39 - 副本(2015 college entrance examination physics a review class tracking detection (twelve) comprehensive application of Newton's law of motion (two) questions and.doc
- 2014期末(At the end of 2014).doc
- 20种ps技术(20 kinds of PS Technology).doc
- 21世纪前十年对世界有重大影响的100人(100 in twenty-first Century the first ten years of the world have a significant impact).doc
- 211+985大学分数线与重点专业(211+985 scores and focus on the professional university).doc
- 21天潜意识巨人训练(21 days training giant subconscious).doc
- 22《猴子种果树》(22 monkey fruit).doc
- 22岁的女生,要有成人的视觉(22 year old girl to have adult vision).doc
- 22岁女生。要有成人的视觉,理性的智慧。如何气场强大,内心坚定(A 22 year old girl. To have adult vision, rational wisdom. How powerful gas field, a strong heart).doc
- c++教学大纲(The c++ syllabus).doc
- c++_time类(Class c++_time).doc
- c++术语中英对照(C++ terms in English and Chinese).doc
- c++中const用法总结(Summary of const usage in c++).doc
- c++程序设计论文(C++ programming papers).doc
- c++简单反射代码(C++ simple reflection code).doc
- c++期末复习(程序填空题)1(C++ final review (fill in the blanks) 1).doc
- c++名家对话-008访问限制(C++ masters dialogue -008 access restrictions).doc
- c++编写进程调度模拟程序(Preparation of c++ scheduling process simulation program).doc
- c++编程新手错误分析(C++ programming novice error analysis).doc
文档评论(0)