C语言_第3章.ppt

上传人:少林足球 文档编号:3597674 上传时间:2019-09-15 格式:PPT 页数:32 大小:2.80MB
返回 下载 相关 举报
C语言_第3章.ppt_第1页
第1页 / 共32页
C语言_第3章.ppt_第2页
第2页 / 共32页
C语言_第3章.ppt_第3页
第3页 / 共32页
C语言_第3章.ppt_第4页
第4页 / 共32页
C语言_第3章.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《C语言_第3章.ppt》由会员分享,可在线阅读,更多相关《C语言_第3章.ppt(32页珍藏版)》请在三一文库上搜索。

1、第三章 C语言的基本构成元素和数据类型,第三章 C语言的基本构成元素和数据类型,3.1 关键字 3.2 标识符 3.3 数据类型 3.4 常量 3.5 变量 3.6 变量的存储类别 3.7 综合运用 3.8 实战练习,本章学习内容,3.1 关键字,3.1 关键字,注意: C语言中,关键字必须是小写字母。 定义变量时,关键字不能作为变量名使用,因为它属于C语言的保留字,仅限内部使用。,3.2 标识符,标识符只能是由字母、数字、下划线组成的字符串,而且第一个字符必须是字母或下划线,而不能是数字 例如: 3count; /*错误,数字开头*/ score+; /*错误,包含了+号*/ count3;

2、 /*正确,字母开头,字母、数字组成*/ _score; /*正确,下划线开头,字母、下划线组成*/,标识符不能是C语言保留的关键字 例如: int /*错误,int是C语言关键字*/ Double /*正确,首字母大写,不是关键字*/,3.2 标识符,C语言是区分大小写的,仅大小写不同的字符串代表不同的标识符 例如: count,Count /*两个不同的标识符*/,标识符命名尽量做到“见行知义” 例如: score /*表示分数*/ count /*表示数量*/,ANSI规定,C语言标识符可以为任意长度,但是最好遵循“min-length & max-information”原则,考虑到跨

3、平台编译,最好遵守前8字符可以唯一区分的原则(某些编译程序仅能够识别前8字符,如IBM PC的MS C),3.3 数据类型,3.3 数据类型,基本数据类型 不可以再分解为其他类型:整型、字符型、实型、枚举类型,构造数据类型 由多种类型组合而成的类型:数组类型、结构体类型和共用体类型,指针类型 指针类型的值表示某个变量在内存中的地址,空类型 使用void关键字定义,使用时通常需要强制转换 void* memcpy(void *dest, const void *src, size_t n);,3.4 常量,整型常量可以是长整型、短整型、有符号整型和无符号整型,使用时通常需要加限制符。常数后面加L

4、修饰,表示长整型;常数后面加U修饰,表示无符号整型。,3.4.1 整型常量,直接使用的整型常数,例如:12,-418等,存储单位的相关概念:位、字节、字,LongNumber = 234L; /*表示长整型*/ unsignedNumber = 501U; /*表示无符号整型*/ unsignedLongNumber = 1024LU; /*表示无符号长整型*/,3.4 .1整型常量,整型常量的三种表示形式:八进制形式、十进制形式和十六进制形式,八进制形式 在常数前加0修饰,数值的每个数码取值为07 0345 0123 十进制形式 人们最容易接收的形式,数值的数码取值为:09 十六进制形式 在

5、常数前加0X或0x修饰,数值的数码取值为:09、AF(或af),其中AF(或af)分别代表十进制数值:1015,3.4 .1整型常量,计算机中,符号数的三种表示方法:原码、反码和补码,原码 数值除符号外,对应的二进制数,以数值10为例:,反码 原码的二进制数按位取反,以数值-10为例:,补码 计算机中存储的数值方式,整数的补码与原码相同,负数的补码是将该数绝对值的二进制形式按位取反+1,3.4.2 实型常量,指数形式 一般形式:aEn(其中a、n都是十进制数) 表示:a*10n 例如:0.1 1e-1 127.154 -1.27154e2,实型也称为浮点型,由整数部分和小数部分组成,在常量的后

6、面可以使用F(f)修饰,表示float单精度类型;或使用L(l)修饰,表示long float长双进度类型,在C语言中,实数只采用十进制,有两种表示方法:十进制小数形式、指数形式,十进制小数形式 也称为科学计数形式,由数码09和小数点组成,例如: 0.1 127.154,3.4 .3 字符常量,字符串常量 由一对双引号括起来的字符序列,如:“C program”、”Hello world!”,字符串存储,字符常量 单引号括起来的一个字符,如:A、a、$,3.4 字符型常量,字符常量和字符串常量的区别 (1)字符常量由单引号括起来的,字符串常量必须由双引号括起来 (2)字符常量只能是单个字符,字

7、符串常量可包括0、1、多个字符 (3)字符常量的单个字符只占1个字节,字符串常量占用的内存字节数等于字符串中字符个数+1个字节,因为要包含0字符,例如同样存储字符a,字符常量和字符串常量分别如下:,a,字符常量,字符串常量,a,0,ASCII码,3.4 .4 转义字符,3.5 变量,变量是指在程序运行期间,其值可以改变的量。 一个变量应该有名字,在内存中占据一定大小的存储单元 变量必须在使用之前定义,3.5 .1整型变量,3.5.2 实型变量,一般占4个字节的内存空间,按指数形式存储 例如:3.1415的指数形式为:0.31415e1,在内存中存储如下:,3.5.2实型 变量,实型变量按照实数

8、的精度可以分为单精度类型、双精度类型和长双精度类型,其中单精度类型可以提供7位有效数字;双精度类型可以提供16位有效数字;长双精度类型可以提供19位有效数字,3.5 .3 字符变量,由于字符型变量中存储的是无符号整数,所以可以将字符型变量与整型变量相互赋值,即字符和整数相互使用,在使用中要注意:整数赋给字符时,需要注意可能会引起字符的ASCII码值越界(ASCII码值最大为127),字符型变量用来存储字符常量,类型说明符为char,一个字符型变量只能存储一个字符,实际上是将该字符常量的ASCII码值(一个无符号整数)存储到字符变量所占的存储单元 字符型变量占1个字节的内存空间,取值范围为:-1

9、28127,3.6 变量的存储类别,变量的存储类别分为:静态存储和动态存储,存储类修饰符则告知编译器需要处理什么类型的变量:自动(auto)、静态(static)、寄存器(register)和外部(extern),变量有不同的存储类别,它由两种方式决定: 变量被定义的位置和存储类修饰符,3.6.1 静态变量与动态存储,从变量在程序中的生存期(变量存在的时间)可以将变量分为静态存储和动态存储。静态存储方式是指程序运行期间分配固定的存储空间;而动态存储方式是指在程序运行期间根据需要动态的分配存储空间。 通常存储空间可以分为三个部分:程序区、静态存储区和动态存储区。静态存储类别的变量存放在静态存储区

10、,动态存储类别的变量存放在动态存储区。,3.6.2 auto变量,函数或语句块中的局部变量,如果不专门声明为static存储类别,都是动态分配存储空间的,存储在动态存储区中,当函数或语句块结束时,系统自动释放这些变量的存储空间,因此这类局部变量称为自动变量,类别修饰符为auto,所以也称为auto变量,3.6 .3 static变量,与auto变量不同,尽管两者的作用域都仅限于声明变量的函数(语句块)中,但static变量将始终保持它的值,并且初始化操作只在第一次执行时起作用,在随后的运行过程中,变量将保持函数(语句块)上一次执行时的值,static变量是静态变量,有时希望函数(语句块)中局部

11、变量的值在函数调用结束后可以保留,不会随着变量的自动释放而消失,这时就应该指定局部变量为“静态局部变量”,#include void doubleValue() static int staticNum= 5; staticNum = staticNum * 2; printf(“%dn”, staticNum); /*输出乘2的结果*/ ,3.6 .3 static变量,【例3.1】练习使用static变量,int main() printf(“第一次调用:”); doubleValue(); /*调用doubleValue函数*/ printf(“第二次调用:”); doubleValue

12、(); /*调用doubleValue函数*/ return 0; ,程序运行输出: 第一次调用:10 第二次调用:20,3.6 .4 register变量,register变量称为寄存器变量,register变量存放在计算机的某个硬件寄存器中,而不是内存。这样可以提高程序的运行速度,因为寄存器的读写速度远远高于内存的读写速度,【说明】 只有局部自动变量和函数的形式参数可以作为寄存器变量 即使定义变量存储类别为寄存器变量,变量的值也不一定就存储在寄存器中,实际运行还是编译器作决定,编译器可以忽略register对变量的修饰 由于大多数计算机的寄存器不占用内存地址,所以无法获取寄存器变量的地址,

13、即使编译器忽略register修饰把变量存储在内存中 如果想有效利用寄存器变量,必须像汇编语言程序员那样了解处理器的内部结构,知道可用于存放变量的寄存器的数量、种类以及工作方式。但是不同计算机对于这些细节可能是不同的,因此,对于一个要具备可移植的程序来说,register变量的作用不大,3.6 .4 register变量,3.6.5 extern变量,外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾 如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件结尾。如果文件在定义点之前想引用该外部变量,则应该用关键字extern对该变量作“外部

14、变量声明”,表示该变量是一个已经定义的外部变量,有了此声明,就可以从“声明”处起,合法的使用该外部变量 如果某个工程中有两个源文件A和B,在文件B中定义了一个外部变量x,此时变量x的作用域仅限文件B,如果A要引用这个变量,也必须使用关键字extern对该变量作“外部变量声明”,然后才可以使用该外部变量,3.7 综合运用,混合运算类型转换规则,3.7 综合运用,【例3.2】混合运算应用 #include int main() char ch = a; /*字符变量*/ int iNum = 10; /*整型变量*/ float fNum = 0.5f; /*实型变量*/ double result = (ch + iNum) * fNum; /*混合运算*/ printf(“%fn”, result); /*输出结果*/ return 0; ,程序运行结果: 53.500000,3.8 实战练习,定义一个整型变量,给其赋值为101,再使用printf函数输出 利用字符型变量,输出字符串“Wonderful!” 使用static变量,在自定义的函数中实现10的3次方 编程计算表达式:1.25*4 + a A,END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1