第4章C语言基本语法.ppt
《第4章C语言基本语法.ppt》由会员分享,可在线阅读,更多相关《第4章C语言基本语法.ppt(34页珍藏版)》请在三一办公上搜索。
1、第4章 C语言基本语法,41 C 语言的标识符和关键字,用来标识变量名、符号常量名、函数名、数组名、类型名等的有效字符序列称为标识符。简单地说,标识符就是一个名字。,C 语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,要注意的是C 语言中大写字母与小写字母被认为是两个不同的字符,42 数据类型,数据类型数据的不同格式叫做数据类型。数据结构数据按一定的数据类型进行的排列、组合及架构称为数据结构。C51提供的数据结构是以数据类型的形式出现的,C51的数据类型如下所示:位型(bit)字浮型(char)整型(int)基本类型:长整型(long)浮点型(float)双
2、精度浮点型(double)数据类型:数组类型(array)构造类型:结构体类型(struct)共用体(union)枚举(enum)指针类型:空类型:,数据具有一定格式的数字或数值叫数据,4.2.1 常量,常量在程序运行的过程中,其值不能改变的量称为常量。,常量的数据类型只有整型、浮点型、字符型、字符串型和位标量。,4.2.2 变量,变量在程序运行中,其值可以改变的量称为变量。一个变量主要由两部分构成:一个是变量名,一个是变量值。每个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该单元中存放该变量的值。,1位变量(bit)变量的类型是位,位变量的值可以是1(true)或0(fals
3、e)。,2字符变量(char)字符变量的长度为1字节(Byte)即8位。,3整型变量(int)整型变量的长度为16位,长度为两个字节,用于存放一个双字节数据。,4 long 长整型变量long 长整型长度为四个字节,用于存放一个四字节数据。,5浮点型变量(float)浮点型变量为32位,占4字节。,6*指针型变量指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。,7 sfr 特殊功能寄存器sfr 也是一种扩充数据类型,点用一个内存单元,值域为0255。,8sfr16 16 位特殊功能寄存器sfr16 占用两个内存单元,值域为065535。,9 sbit 可寻址位sbit 同位是C
4、51 中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。,自动变量(auto)内部变量(inner)静态变量(static)寄存器变量(register)变量 全局变量(global)外部变量(extern)静态变量(static),423 变量的存储种类,按变量的有效作用范围可以将其划分为局部变量和全局变量;还可以按变量的的存储方式为其划分存储种类。在C语言中变量有四种存储种类,即自动(auto)、外部(extern)、静态(static)和寄存器(register)。这四种存储种类与全局变量和局部变量之间的关系如图32所示,1、自动变量(auto
5、),定义一个变量时,在变量名前面加上存储种类说明符“auto”,即将该变量定义为自动变量。自动变量是C语言中使用最为广泛的一类变量。,自动变量的作用范围在定义它的函数体或复合语句内部,只有在定义它的函数内被调用,或是定义它的复合语句被执行时,编译器才为其分配内存空间,开始其生存期。当函数调用结束返回,或复合语句执行结束时,自动变量所占用的内存空间就被释放,变量的值当然也就不复存在,其生存期结束。当函数被再次调用或复合语句被再次执行,编译器又会为它们内部的自动变量重新分配内存空间,但它不会保留上次运行时的值,而必须被重新赋值。因此自动变量始终是相对于函数或复合语句的局部变量。,2、外部变量(ex
6、tern),使用存储种类说明符“extern”定义的变量称为外部变量。按照缺省规则,凡是在所有函数之前,在函数外部定义的变量都是外部变量,定义时可以不写extern说明符。但是,在一个函数体内说明一个已在该函数体外或别的程序模块文件中定义过的外部变量时,则必须要使用extern说明符。一个外部变量被定义之后,它就被分配了固定的内存空间。外部变量的生存期为程序的整个执行时间,即在程序的执行期间外部变量可被随意使用,当一条复合语句执行完毕或是从某一个函数返回时,外部变量的存储空间并不被释放,其值也仍然保留。因此外部变量属于全局变量。,C语言允许将大型程序分解为若干个独立的程序模块文件,各个模块可分
7、别进行编译,然后再将它们连接在一起。在这种情况下,如果某个变量需要在所有程序模块文件中使用,只要在一个程序模块文件中将该变量定义成全局变量,而在其它程序模块文件中用extern说明该变量是已被定义过的外部变量就可以了。函数是可以相互调用的,因此函数都具有外部存储种类的属性。定义函数时如果冠以关键字extern即将其明确定义为一个外部函数。例如extern int func2(char a,b)。如果在定义函数时省略关键字extern,则隐含为外部函数。如果要调用一个在本程序模块文件以外的其它模块文件所定义的函数,则必须要用关键字extern说明被调用函数是一个外部函数。对于具有外部函数相互调用
8、的多模块程序,可用C51编译器分别对各个模块文件进行编译,最后L51连接定位器将它们连接成为一个完整的程序。,3、静态变量(static)使用存储种类说明符“static”定义的变量称为静态变量。在例59的模块2程序文件中使用了一个静态变量:static int a5;由于这个变量是在函数funl()内部定义的,因此称为内部静态变量或局部静态变量。局部静态变量不象自动变量那样只有当函数调用它时才存在,退出函数后它就消失,局部静态变量始终都是存在的,但只能在定义它的函数内部进行访问,退出函数之后,变量的值仍然保持,但不能进行访问。还有一种全局静态变量,它是在函数外部被定义的,作用范围从它的定义点
9、开始,一直到程序结束。当一个C语言程序由若干个模块文件所组成时,全局静态变量始终存在,但它共能在被定义的模块文件中访问,其数据值可为该文件内的所有函数共享,退出该文件后,虽然变量的值仍然保持着,但不能被其它模块文件访问。局部静态变量是一种在两次函数调用之间仍能保持其值的局部变量。有些程序需要在多次调用之间仍然保持变量的值,使用自动变量无法实现这一点,使用全局变量有时又会带来意外的副作用,这时就可采用局部静态变量。,为了提高程序的执行效率,C语言允许将一些使用频率最高的那些变量,定义为能够直接使用硬件寄存器的所谓寄存器变量。定义一个变量时在变量名前而冠以存储种类符号“reg-ister”即将该变
10、量定义成为了寄存器变量。寄存器变量可以被认为是自动变量的一种,它的有效作用范围也与自动变量相同。由于计算机中的寄存器是有限的,不能将所有变量都定义成寄存器变量。通常在程序中定义的寄存器变量时只是给编译器一个建议,该变量是否能真正成为寄存器变量,要由编译器根据实际情况来确定。另一方面,c51编译器能够识别程序中使用频率最高的变量,在可能的情况下,即使程序中并未将该变量定义为寄存器变量,编译器也会自动将其作为寄存器变量处理。,4、寄存器变量(register),424 变量及其存储模式,一个变量应该有一个名字,在内存中占据一定的存储单元,在该存储单元中存放变量的值。在C 语言中,要求对所有用到的变
11、量作强制定义,也就是“先定义,后使用”。在C51中对变量进行定义的格式如下:存储种类 数据类型 存储器类型 变量名表,存储模式如下:存储模式决定了默认的存储器类型,此存储器类型将应用于函数参数,局部变量和定义时未包含存储器类型的变量。你可以在命令行用SMALL,COMPACT和LARGE参数定义存储模式。定义变量时,使用存储器类型显式定义将屏蔽默认存储器类型。,1小(SMALL)模式 所有变量都默认在8051的内部数据存储器中。这和用data显式定义变量起到相同的作用,2紧凑(COMPACT)模式 此模式中,所有变量都默认在8051的外部数据存储器的一页中。,3大(LARGE)模式 在大模式下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基本 语法

链接地址:https://www.31ppt.com/p-5634946.html