数据存储预处理.ppt_第1页
数据存储预处理.ppt_第2页
数据存储预处理.ppt_第3页
数据存储预处理.ppt_第4页
数据存储预处理.ppt_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章C语言快速入门 变量修饰符变量的作用域变量的生存期预处理指令 变量修饰符 const修饰符 常量修饰符 例如 constinta 20 说明 必须赋初值 static修饰符例如 staticintx 0 说明 静态变量的生存期是整个程序执行期 不会随着函数的调用而动态创建 变量的作用域 Scope 指在源程序中定义变量的位置及其能被读写访问的范围分为局部变量 LocalVariable 全局变量 GlobalVariable 局部变量的有效范围是所在定义的函数内 只有在本函数内才能使用他们 在此函数以外是不能使用这些变量的 局部变量 LocalVariable 全局变量 GlobalVariable 在所有函数之外定义的变量生存期是整个程序 从程序运行起即占据内存 程序运行过程中可随时访问 程序退出时释放内存有效范围是 从定义变量的位置开始到本程序结束 如果在同一个源文件中 全局变量与局部变量同名 则在局部变量的作用范围内 外部变量被 屏蔽 即不起作用 auto自动变量 动态存储区register寄存器变量 CPU中的寄存器extern外部变量 静态存储区static静态变量 静态存储区 存储类型 程序区 静态存储区 动态存储区 形参 自动变量 函数调用的现场等 全局变量 静态变量 存放数据 RAM 在静态区中存的变量是在源程序编译时分配存储单元的 在程序执行完毕才释放 动态区中的变量是在程序执行过程中分配存储单元的 并在程序执行过程中释放 变量的生存期静态存储区中的变量 与程序 共存亡 动态存储区中的变量 与函数 共存亡 寄存器中的变量 同动态存储区 程序区 静态存储区 动态存储区 存放数据 RAM 9 自动类型变量 说明局部变量时 用auto修饰或缺省情况下定义的变量称为自动类型变量 auto类型变量名 voidmain inti 10 autointj printf d d i j i j为自动类型变量 局部变量 程序从变量的作用域开始 动态地为i j分配存储空间 到变量的作用域结束 动态地收回变量的存储空间 动态存储变量 自动类型变量如果不赋初值 其值不确定 10 10 静态类型变量 用关键词static修饰的变量称为静态类型变量 static类型变量名 staticinty 5 staticchars voidmain staticfloatx y s为静态类型全局变量 x为静态类型局部变量 静态类型变量为静态存储变量 在程序开始运行时就为其分配存储空间 直到程序运行完毕收回 静态类型变量如果不赋初值 其初值为0 y 5 s x 0 11 includeintt inti 100 i 5 returni voidmain void printf i d n t printf i d n t 静态类型变量 例使用静态类型的局部变量 includeintt staticinti 100 i 5 returni voidmain void printf i d n t printf i d n t i 105i 110 为了保存函数运行的结果 以便在下次调用该函数时 能继续使用上次计算的结果 i 105i 105 静态类型变量的初始化仅在程序开始运行时处理一次 执行完函数后 系统不收回变量存储空间 再次调用函数时 变量仍使用相同的存储空间 因此保留原来的值 变量存储类型 局部变量默认为auto型register型变量个数受限 且不能为long double float型局部static变量具有全局寿命和局部可见性局部static变量具有可继承性extern不是变量定义 可扩展外部变量作用域 例文件file1 cinta main f2 f1 f1 autointb f2 f2 staticintc 从不同角度对存储类别的归纳 1 从作用域角度分 有局部变量和全局变量 它们采用的存储类别是 2 从变量存在的时间来分 有动态存储和静态存储两种类型 静态存储是程序整个运行期间都存在 而动态存储则是在调用函数时临时分配存储单元 动态存储 自动变量 本函数内有效 寄存器变量 本函数内有效 形式参数 静态存储 静态局部变量 函数内有效 外部变量 其它文件可引用 静态外部变量 本文件内有效 3 从变量值存放的位置来区分 可分为 1 内存中静态存储区 静态局部变量 函数内有效 外部变量 其它文件可引用 静态外部变量 本文件内有效 2 内存中动态存储区 3 CPU中寄存器 自动变量和形式参数 寄存器变量 对局部变量来说 static使变量由动态存储方式改为静态存储方式 对全局变量来说 static使变量局部化 局部于本文件 但仍为静态存储方式 从作用域角度看 凡有static说明的 其作用域都是局限的 或者是局限于本函数内 静态局部变量 或者局限于本文件内 静态外部变量 4 static对局部变量和全局变量的作用不同 预处理命令 作用 对源程序编译之前做一些处理种类 宏定义 define文件包含 include条件编译 if else endif等格式 开头占单独书写行语句尾不加分号 宏定义不带参数宏定义一般形式 define宏名字符串功能 用指定标识符 宏名 代替字符串 如 defineYES1 defineNO0 definePI3 1415926 defineOUTprintf Hello World 20 带参数宏定义一般形式 define宏名 参数表 宏体 例 defineS r PI r r相当于定义了不带参宏S 代表字符串 r PI r r 宏展开 形参用实参换 其它字符保留宏体的各形参外一般应加括号 例 definePOWER x x xx 4 y 6 z POWER x y 宏展开 z x y x y 一般写成 definePOWER x x x 宏展开 z x y x y 例 defineS a b a b area S 3 2 宏展开 area 3 2 不能加空格 21 带参数的宏定义 define宏名 参数表 使用参数的字符或字符串 include defineVOLUMN a b c a b c defineV1 a b a b defineV2 a b a b defineV3 a b a b voidmain void b VOLUMN 1 2 3 c V1 1 2 2 1 d V2 1 2 2 1 e V3 1 2 2 1 在宏调用预编译处理时 依次用实参替代宏定义中的形参 并将替代后的字符串替代宏调用 在宏定义中要用括号把形参扩起来 以减少错误 b 6 c 6 d 9 宏定义时 宏名与左括号之间不能有空格 如果有空格 则将空格后的全部字符都作为无参宏所定义的字符序列 而不作为形参 22 defineMAX x y x y x y main inta b c d t t MAX a b c d 宏展开 t a b c d a b c d intmax intx inty return x y x y main inta b c d t t max a b c d 例用宏定义和函数实现同样的功能 23 带参的宏与函数区别 文件包含功能 一个源文件可将另一个源文件的内容全部包含进来一般形式 include 文件名 或 include 处理过程 预编译时 用被包含文件的内容取代该预处理命令 再对 包含 后的文件作一个源文件编译 直接按标准目录搜索 先在当前目录搜索 再搜索标准目录可指定路径 被包含文件内容源文件 c 头文件 h 宏定义数据结构定义函数说明等 文件包含可嵌套 也可以在file1中用两个include命令分别包含file2和file3 include file3 h include file2 h file3应出现在file2之前 26 如何运行一个多文件的程序 用TurboC环境实现多文件程序的运行先输入并编辑各个源文件分别存盘建立一个 项目文件 只包括组成程序的所有文件名 将此文件以 prj 存盘在主菜单中选择Project菜单 选择菜单项Projectname 输入刚建立的项目文件名按 运行 27 VC环境中的多文件程序的运行先输入并编辑各个源文件分别存盘创建一个空的项目文件 用来存放该程序的上述各个文件 File New Projects标签 Win32ConsoleApplication Anemptyproject 即文件 新建 工程 标签 Win32ConsoleApplication 空的项目文件创建好后 将事先编辑好的各源文件添加到项目文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论