第三章面向过程的程序设计.pptVIP

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章面向过程的程序设计.ppt

学习目标 什么是程序 ? 程序是由一系列代码组成的 什么是代码呢?就像报纸是通过文字组成自己的一样,代码可以组成程 序。代码是人们约定的一系列符号,通过这些符号的排列组合就形成程 序。代码是程序员容易理解的计算指令表现形式,提供这些代码约定的 工具程序就是计算机语言。 代码的组织单元是函数 程序是可以通过计算机执行的实体 代码可以被编译,链接,产生计算机可以认识的可执行的程序,程序执行时将加载到计算的内存空间,将自己的第一条代码指令的地址交给CPU执行。严格讲计算机可以识别的机器代码组成的程序,才是程序。 另一种处理代码的手段是解释执行。源代码可以不必一次性编译生成可执行程序,它可以通过另一个程序一边解释一边执行。即解释执行。 程序在执行所需内存空间 代码内存空间 CPU执行每一条指令,必须事先将指令装入内存空间。以便于CPU能即 时读到指令。这种内存空间我们称为代码内存空间 临时内存空间 CPU执行程序时还需要临时内存空间,比如执行两个数据的加法,这种 数据需求事先存放在内存空间。程序是如何管理自己的临时内存空间 呢?是通过类型来管理的 进程 我们将上述程序执行时所需要的内存空间等其它资源统称为该程序的进 程,进程是程序执行时的动态表现形式。是程序执行时所必须具备的资 源集合。 进程内存分区 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放(malloc,free),若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 最容易发生错误的常量区 常量区主要存放字符串常量.常量区的内存是只可读型的,学习的初期经常拿他来写入数据,运行后会立即发生错误. char *s = fasef; char a[10] = fasef; 以上两句,指针s和数组a在栈区,s占4个字节,因为是指针类型变量。a占10个字节,因为是10个char型变量数组。“fasef”存放在静态区的常量区,占6个字节,因为是字符串。 “fasef”可以作为字符串的首地址。 明确了以上关系,我们可以看到s指针被赋值,实际上是指向了常量区的“fasef”。 数组就不同,它是用自己的栈区空间存放了“fasef”,一共6个字节。 最容易发生错误的常量区 1.a[i] = *; /*为什么能给它赋值*/ 因为数组a自身在栈区有自己空间可以赋值,这是数组的特性。 2.s[i] = ‘*’; /*不能给它赋值*/ 因为s是指针,没有分配空间,不可以这样赋值。 s指针指向一个地址。申请空间就是给s一个空间的地址,这个空间可以用来存放数据。也可给s一个常量的地址,它就指向常量。但是,我们知道字符串常量是不可以改变的,所以这样就错了。 3.char *s = “fassd”; *(s + 2) = ‘A’; 这样肯定不行,会造成内存错误。s没有申请空间,如何下移赋值! 内存空间 操作系统为每个程序进程赋予4G的内存空间,程序的代 码、常量、变量、程序引用的其他模块,都在这4G的内存 空间进行分配。 (00x0000FFFF),64K空间,用于NULL指针分配. (00x7FFEFFFF),2147352576(约2G)空间,属于进程私有 (0x7FFF0000-0x7FFFFFFF),64K空间,用于指针分配(不可访问) (00xFFFFFFFF),2G空间,用于操作系统,不可访问 内存空间 #include stdio.h #define MAX_COUNT 1000 const int CONST_VALUE=30; double g_fValue; int main(int argc, char* argv[]) { const int MAX_VALUE=120; int iValue; iValue=MAX_VALUE; return 0; } 内存空间 第一条指令#include, 是一条宏指令,专门供编译器的预处理程序来处理的指令称宏指令。该指令引入了一个C语言所定义的一个头文件std

文档评论(0)

aiwendang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档