变量存储_预处理.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
局部变量——内部变量 定义:在函数模块内定义的,且只在本函数模块内有效。 说明: 1、main中定义的变量只在main中有效 2、不同函数中同名变量,占不同内存单元 3、形参属于局部变量 4、在复合语句中定义的有效变量 5、局部变量可用存储类型:auto register static (默认为auto) 全局变量---外部变量 定义:在函数外定义,可为本文件所有函数共用 变量的作用域(有效范围):从定义变量的位置开始到本源文件结束为止。 int m=13; int fun(int x,int y) {int m=3; return(x*y-m); } void main() { int a=7,b=5; printf(%d\n,fun(a,b)/m); } 预处理命令 所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。 编译预处理——宏定义 如:#define PI 3.14159 PI —— 符号常量(宏名,最好用大写,以区别一般变量) 3.14159 ——宏体(可以是一个表达式) 作用:用简单符号代表宏体部份内容(编译时会先自动替换) 意义:直观/多次使用/便于修改 注意: #define 可出现在程序的任一位置(作用范围:由此行到程序末尾) 编译预处理——宏定义 宏定义是由源程序中的宏定义命令完成的。?宏代换是由预处理程序自动完成的。 编译预处理——无参宏定义 #define? M ?(y*y+3*y) main(){  int?s,y;  y=1;  s=3*M+4*M+5*M;  printf(s=%d\n,s); }? 编译预处理——宏定义 1.宏定义必须以#define开头,行末不加分号 2. #define 可出现在程序的任一位置,通常#define命令出现在函数外部。 3.每一个#define只能定义一个宏,且只占 一 个书写行 4.宏定义中的宏体只是一串字符,没有值和类型的含义,编译系统只对程序中出现的宏名用定义中的宏体作简单替换,而不作语法检查,且不分配内存空间, 5.宏体为空时,宏名被定义为字符常量0 6 .宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换 编译预处理——宏定义 “文件包含”处理 1、被包含的文件常常被称为“头文件”(#include一般写在文件的开头)。头文件常常以“.h”为扩展名(也可以用其它的扩展名,.h只是习惯或风格)。 2、一条#include只能包含一个头文件,如果要包含多个头文件,使用多条#include命令。 3、在一个被包含的文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。 4、被包含的头文件可以用“”括起来,也可以用括起来。区别在于: “”先在用户当前目录查找头文件,如果没找到,再到存放C库函数头文件的目录中查找;而直接到存放C库函数头文件的目录中查找。 一般地说,使用双引号比较保险。 * * * 变量的作用域、存储类别 变量的属性 数据类型:变量所持有的数据的性质(操作属性) 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时刻存在-------静态变量与动态变量 作用域:变量在某区域内有效-------局部变量与全局变量 变量的存储类型 auto -----自动型 register-----寄存器型 static ------静态型 extern -----外部型 变量定义格式: [存储类型] 数据类型 变量表; 概述: 变量是对程序中数据的存储空间的抽象。 如: int sum; auto int a,b,c; register int i; static float x,y; extern int j; 局部变量 float f1(int a) { int b,c; ……. } char f2(int x,int y) { static int a,j; …… } void main() { int m,n; ……. } a,b,c有效 x,y,a,j有效 m,n有效 局部变量 #include stdio.h void main() { int a,b; a=3; b=4; printf(main:a=%d,b=%d\n,a,b); sub(); printf(main:a=%d,b=%d\n,a,b); } sub

文档评论(0)

jsntrgzxy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档