欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第2章 C语言程序设计.ppt

    • 资源ID:68703160       资源大小:150KB        全文页数:21页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第2章 C语言程序设计.ppt

    第第2章章 C语言的基本数据类型和存储类语言的基本数据类型和存储类2.1 整型数据整型数据 2.1.1 2.1.1 整型常量整型常量整型常量整型常量整型常量即整常数,中的整常数可以有三种表示整型常量即整常数,中的整常数可以有三种表示整型常量即整常数,中的整常数可以有三种表示整型常量即整常数,中的整常数可以有三种表示形式,即十进制整数、八进制整数和十六进制整数。形式,即十进制整数、八进制整数和十六进制整数。形式,即十进制整数、八进制整数和十六进制整数。形式,即十进制整数、八进制整数和十六进制整数。整型常量的说明:整型常量的说明:整型常量的说明:整型常量的说明:123123L L、123U123U、123LU123LU十进制数:一串连续的数字表示,最高位非零。十进制数:一串连续的数字表示,最高位非零。十进制数:一串连续的数字表示,最高位非零。十进制数:一串连续的数字表示,最高位非零。八进制数:以数字零开头。八进制数:以数字零开头。八进制数:以数字零开头。八进制数:以数字零开头。十六进制数:以数字零和字母十六进制数:以数字零和字母十六进制数:以数字零和字母十六进制数:以数字零和字母x x开头,开头,开头,开头,a-fa-f不区分大小写。不区分大小写。不区分大小写。不区分大小写。考虑如下常数:考虑如下常数:考虑如下常数:考虑如下常数:3276732767,-32768-32768,0 0,010010,011011,016016,018018,ox10ox10,0 xde0 xde,0 xf0 xf2.1.2 整型变量整型变量语言中的整型变量分为有符号和无符号两种语言中的整型变量分为有符号和无符号两种语言中的整型变量分为有符号和无符号两种语言中的整型变量分为有符号和无符号两种,所有所有所有所有变量在使用前必须加以说明或定义。其中变量在使用前必须加以说明或定义。其中变量在使用前必须加以说明或定义。其中变量在使用前必须加以说明或定义。其中:每种有符号整型变量又可细分为标准整型每种有符号整型变量又可细分为标准整型每种有符号整型变量又可细分为标准整型每种有符号整型变量又可细分为标准整型(intint)、短整型短整型短整型短整型(short)short)和长整型和长整型和长整型和长整型(long)long)三类三类三类三类,其值可正可负。例如:其值可正可负。例如:其值可正可负。例如:其值可正可负。例如:intint a,b;/short c,d;/long f,g;a,b;/short c,d;/long f,g;每种无符号整型变量也可细分为标准整型每种无符号整型变量也可细分为标准整型每种无符号整型变量也可细分为标准整型每种无符号整型变量也可细分为标准整型(unsignedunsigned int int)、短整型短整型短整型短整型(unsigned short)unsigned short)和长整型和长整型和长整型和长整型(unsigned long)unsigned long)三类三类三类三类,其其其其值不能为负。例如:值不能为负。例如:值不能为负。例如:值不能为负。例如:unsigned unsigned intint a,b;/unsigned short a,b;/unsigned short c,d;/unsigned long f,g;c,d;/unsigned long f,g;intint、shortshort和和和和longlong的区别主要在表示的整数范围不同。通常的区别主要在表示的整数范围不同。通常的区别主要在表示的整数范围不同。通常的区别主要在表示的整数范围不同。通常以一个机器字来存放一个以一个机器字来存放一个以一个机器字来存放一个以一个机器字来存放一个intint型数据。且型数据。且型数据。且型数据。且intint、shortshort和和和和longlong型型型型整数的字长满足整数的字长满足整数的字长满足整数的字长满足:shortshortintintlonglong2.1.3 整型数据的存储表示整型数据的存储表示正整数:以原码形式存放在内存中,字长为正整数:以原码形式存放在内存中,字长为正整数:以原码形式存放在内存中,字长为正整数:以原码形式存放在内存中,字长为1616时,整数范围时,整数范围时,整数范围时,整数范围取取取取 0-32767 0-32767。例如:整数。例如:整数。例如:整数。例如:整数 5 5 对应对应对应对应 0 0000000000000101000000000000101。负整数:以补码形式存放在内存中。例如负整数:以补码形式存放在内存中。例如负整数:以补码形式存放在内存中。例如负整数:以补码形式存放在内存中。例如:-5:-5十进制负整数十进制负整数十进制负整数十进制负整数补码形式补码形式补码形式补码形式:1 1000000000000101000000000000101原码原码原码原码求原码的反码求原码的反码求原码的反码求原码的反码:1 1111111111111010111111111111010反码反码反码反码把所得的反码加把所得的反码加把所得的反码加把所得的反码加1:1:1 1111111111111011111111111111011补码补码补码补码内存中的补码内存中的补码内存中的补码内存中的补码 十进制负整数十进制负整数十进制负整数十进制负整数:对补码各位取反对补码各位取反对补码各位取反对补码各位取反:1111111111111010:1111111111111010补码补码补码补码,取反后得取反后得取反后得取反后得:1000000000000101:1000000000000101将其转换为十进制数将其转换为十进制数将其转换为十进制数将其转换为十进制数:得得得得-5-5将结果减将结果减将结果减将结果减1,1,得得得得-5-1=-6-5-1=-6。考虑考虑考虑考虑10000000000000001000000000000000、111111111111111111111111111111112.2 字符型数据字符型数据2.2.1 2.2.1 字符型常量字符型常量字符型常量字符型常量字符型常量是由一对单引号括起来的单个字符字符型常量是由一对单引号括起来的单个字符字符型常量是由一对单引号括起来的单个字符字符型常量是由一对单引号括起来的单个字符(可打印可打印可打印可打印)。如:。如:。如:。如:x,a,A,b,$,#x,a,A,b,$,#。一个转义序列是一个反斜线后跟特定的字符,表示某一个转义序列是一个反斜线后跟特定的字符,表示某一个转义序列是一个反斜线后跟特定的字符,表示某一个转义序列是一个反斜线后跟特定的字符,表示某些不可打印的字符(如回车符,响铃符等)。例如:些不可打印的字符(如回车符,响铃符等)。例如:些不可打印的字符(如回车符,响铃符等)。例如:些不可打印的字符(如回车符,响铃符等)。例如:n n 换行符换行符换行符换行符 反斜线符反斜线符反斜线符反斜线符 t t 水平制表符水平制表符水平制表符水平制表符 单引号符单引号符单引号符单引号符 b b 退格符退格符退格符退格符 00 空字符空字符空字符空字符 r r 回车符回车符回车符回车符 dddddd 位位位位型型型型 这里这里这里这里dddddd是是是是1 1至至至至3 3位八进制数字位八进制数字位八进制数字位八进制数字 f f 换页符换页符换页符换页符 00 xffxff 位型位型位型位型 这里这里这里这里ff ff是是是是1 1至至至至2 2位十六进制数字位十六进制数字位十六进制数字位十六进制数字注意:转义序列实际上作为一个字符来对待。但如注意:转义序列实际上作为一个字符来对待。但如注意:转义序列实际上作为一个字符来对待。但如注意:转义序列实际上作为一个字符来对待。但如果反斜线之后的字符和它不构成转义序列,则果反斜线之后的字符和它不构成转义序列,则果反斜线之后的字符和它不构成转义序列,则果反斜线之后的字符和它不构成转义序列,则不起转义作用将被忽略。例如:不起转义作用将被忽略。例如:不起转义作用将被忽略。例如:不起转义作用将被忽略。例如:语句语句语句语句 printfprintf(A(ANbcNbc nDEFnDEFn);n);语句语句语句语句 printfprintf(tab(tabrcdrcdnnefef ghghx);x);2.2 字符型数据字符型数据字符型变量是通过保留字字符型变量是通过保留字字符型变量是通过保留字字符型变量是通过保留字charchar来说明的,其格式如下来说明的,其格式如下来说明的,其格式如下来说明的,其格式如下:char c1,c2;char c1,c2;该语句说明了该语句说明了该语句说明了该语句说明了c1c1和和和和c2c2两个字符型变量。每个字符型变两个字符型变量。每个字符型变两个字符型变量。每个字符型变两个字符型变量。每个字符型变量可用来存放一个字符,例如:量可用来存放一个字符,例如:量可用来存放一个字符,例如:量可用来存放一个字符,例如:#include“include“stdiostdio.h”.h”main()main()char char ch ch;chch=getchargetchar();();putcharputchar(chch););2.2.2 字符型变量字符型变量2.2.3 字符型数据的存储表示字符型数据的存储表示字符数据在计算机内部也是以一个字节的二进制形字符数据在计算机内部也是以一个字节的二进制形字符数据在计算机内部也是以一个字节的二进制形字符数据在计算机内部也是以一个字节的二进制形式来表示的,即事先对所要处理的每个字符都进行式来表示的,即事先对所要处理的每个字符都进行式来表示的,即事先对所要处理的每个字符都进行式来表示的,即事先对所要处理的每个字符都进行编码(通常是一个整型数)且不同的字符其编码也编码(通常是一个整型数)且不同的字符其编码也编码(通常是一个整型数)且不同的字符其编码也编码(通常是一个整型数)且不同的字符其编码也不相同。不相同。不相同。不相同。例如:例如:例如:例如:main()main()char c1,c2;char c1,c2;c1=a;c1=a;c2=b;c2=b;c1=c1-32;c1=c1-32;c2=c2-32;c2=c2-32;printfprintf(“c1=%c c2=%c(“c1=%c c2=%cn”,c1,c2);n”,c1,c2);printf printf(“c1_ASCII_CODE=%d c2_ASCII_CODE=%dn”,c1,c2);(“c1_ASCII_CODE=%d c2_ASCII_CODE=%dn”,c1,c2);运行结果:运行结果:运行结果:运行结果:printfprintf中的参数个数可以有多个,但第一个参数必须是字符串,中的参数个数可以有多个,但第一个参数必须是字符串,中的参数个数可以有多个,但第一个参数必须是字符串,中的参数个数可以有多个,但第一个参数必须是字符串,我们称其为格式串(我们称其为格式串(我们称其为格式串(我们称其为格式串(format-stringformat-string)。)。)。)。c1=A c2=Bc1=A c2=Bc1_ASCII_CODE=65 c2_ASCII_CODE=65c1_ASCII_CODE=65 c2_ASCII_CODE=652.2.3 字符型数据的存储表示字符型数据的存储表示printfprintf首先对格式串从左向右扫描,当遇到可显示字符时就在首先对格式串从左向右扫描,当遇到可显示字符时就在首先对格式串从左向右扫描,当遇到可显示字符时就在首先对格式串从左向右扫描,当遇到可显示字符时就在终端上原样输出,当遇到控制字符(如终端上原样输出,当遇到控制字符(如终端上原样输出,当遇到控制字符(如终端上原样输出,当遇到控制字符(如 nn,响铃符等)就响铃符等)就响铃符等)就响铃符等)就产生相应的动作(换行,响铃等),当遇到转换符时,就将后产生相应的动作(换行,响铃等),当遇到转换符时,就将后产生相应的动作(换行,响铃等),当遇到转换符时,就将后产生相应的动作(换行,响铃等),当遇到转换符时,就将后面的实参依次按转换符的要求转换并输出。常用的转换符有:面的实参依次按转换符的要求转换并输出。常用的转换符有:面的实参依次按转换符的要求转换并输出。常用的转换符有:面的实参依次按转换符的要求转换并输出。常用的转换符有:%d d 十进制整型、十进制整型、十进制整型、十进制整型、%c c 字符型、字符型、字符型、字符型、%f f 浮点型、浮点型、浮点型、浮点型、%s s 字符串型字符串型字符串型字符串型在使用在使用在使用在使用ASCIIASCII编码系统的机器上,用编写一个将大写英文字编码系统的机器上,用编写一个将大写英文字编码系统的机器上,用编写一个将大写英文字编码系统的机器上,用编写一个将大写英文字母转换为小写字母的程序,可用如下一些语句实现:母转换为小写字母的程序,可用如下一些语句实现:母转换为小写字母的程序,可用如下一些语句实现:母转换为小写字母的程序,可用如下一些语句实现:charchar ch ch;chch=getchargetchar();();if(if(chch=A&=A&ch ch=Z)=Z)putcharputchar(a+(a+chch-A);-A);若将上面程序中的字符常量若将上面程序中的字符常量若将上面程序中的字符常量若将上面程序中的字符常量 AA,Z Z和和和和 aa分别用整常分别用整常分别用整常分别用整常数数数数6565,9090和和和和9797来代替程序能否正确运行?来代替程序能否正确运行?来代替程序能否正确运行?来代替程序能否正确运行?2.2.3 字符型数据的存储表示字符型数据的存储表示编译系统将字符型数据当成有符号整型还是无符号整型没编译系统将字符型数据当成有符号整型还是无符号整型没编译系统将字符型数据当成有符号整型还是无符号整型没编译系统将字符型数据当成有符号整型还是无符号整型没有规定。例如:有规定。例如:有规定。例如:有规定。例如:main()main()char char ch ch;chch=376;=376;printfprintf(“%d”,(“%d”,chch););如果将字符看成无符号的,则输出如果将字符看成无符号的,则输出如果将字符看成无符号的,则输出如果将字符看成无符号的,则输出254254,否则,输出,否则,输出,否则,输出,否则,输出-2-2。字符量可参与任何整数运算字符量可参与任何整数运算字符量可参与任何整数运算字符量可参与任何整数运算,如:如:如:如:B-A=66-65=1;a+1=97+1=b B-A=66-65=1;a+1=97+1=b 数字字符数字字符数字字符数字字符 整数值整数值整数值整数值,如如如如:9-0=57-:9-0=57-48=9;9+0=9=48=57=9;48=9;9+0=9=48=57=9;字符量可以参加关系运算字符量可以参加关系运算字符量可以参加关系运算字符量可以参加关系运算,如如如如:ab=ab=真真真真字符量可以参加逻辑运算字符量可以参加逻辑运算字符量可以参加逻辑运算字符量可以参加逻辑运算,如如如如:a&b=a&b=真真真真2.2.3 字符型数据的存储表示字符型数据的存储表示2.2.4 字符串常量字符串常量字符串常量是用一对双引号括起来的零个或多个字符的序列。字符串常量是用一对双引号括起来的零个或多个字符的序列。字符串常量是用一对双引号括起来的零个或多个字符的序列。字符串常量是用一对双引号括起来的零个或多个字符的序列。如:如:如:如:“I am a student”I am a student”,“x”“x”,“”“”其中其中其中其中:“”只充当字符串的分界符,而不是字符串的一部分。只充当字符串的分界符,而不是字符串的一部分。只充当字符串的分界符,而不是字符串的一部分。只充当字符串的分界符,而不是字符串的一部分。如果字符串中要出现双引号,则必须经过转义序列,如:如果字符串中要出现双引号,则必须经过转义序列,如:如果字符串中要出现双引号,则必须经过转义序列,如:如果字符串中要出现双引号,则必须经过转义序列,如:The“a”is an The“a”is an indefindef art art 写成字符串应该是:写成字符串应该是:写成字符串应该是:写成字符串应该是:“The 042a042 is an The 042a042 is an indefindef art”art”字符串中所含的字符个数称字符串的长度。例:字符串中所含的字符个数称字符串的长度。例:字符串中所含的字符个数称字符串的长度。例:字符串中所含的字符个数称字符串的长度。例:“XYZ”XYZ”的长的长的长的长度为度为度为度为3 3,“”“”的长度为的长度为的长度为的长度为0 0,称为空串。,称为空串。,称为空串。,称为空串。字符串所占的空间为长度字符串所占的空间为长度字符串所占的空间为长度字符串所占的空间为长度+1+1,增加的一个字节存放字符串,增加的一个字节存放字符串,增加的一个字节存放字符串,增加的一个字节存放字符串00作为字符串的结尾标志。作为字符串的结尾标志。作为字符串的结尾标志。作为字符串的结尾标志。转义序列也可以出现在字符串中。但是只作为一个字符看待。转义序列也可以出现在字符串中。但是只作为一个字符看待。转义序列也可以出现在字符串中。但是只作为一个字符看待。转义序列也可以出现在字符串中。但是只作为一个字符看待。例如:例如:例如:例如:“I am an student”I am an student”。2.3 浮点型数据浮点型数据2.3.1 2.3.1 浮点型常量浮点型常量浮点型常量浮点型常量浮点型常量有非指数型和指数型两种。浮点型常量有非指数型和指数型两种。浮点型常量有非指数型和指数型两种。浮点型常量有非指数型和指数型两种。非指数型非指数型非指数型非指数型:是指不带指数部分的实型常数,如是指不带指数部分的实型常数,如是指不带指数部分的实型常数,如是指不带指数部分的实型常数,如 +123.+123.,123.123.,-123-123,+123.45+123.45,123.45123.45,-123.45-123.45指数型指数型指数型指数型:是指带有指数部分的实数,如是指带有指数部分的实数,如是指带有指数部分的实数,如是指带有指数部分的实数,如.12345.12345e2e2,12345.0e-312345.0e-3,它们的值都是它们的值都是它们的值都是它们的值都是12.34512.345 。e e(E E)之前必须有数字,之后的指数必须为整数,且不能之前必须有数字,之后的指数必须为整数,且不能之前必须有数字,之后的指数必须为整数,且不能之前必须有数字,之后的指数必须为整数,且不能插入空格!插入空格!插入空格!插入空格!2.3.2 2.3.2 浮点型变量浮点型变量浮点型变量浮点型变量浮点型变量是通过保留字浮点型变量是通过保留字浮点型变量是通过保留字浮点型变量是通过保留字floatfloat来说明的。如:来说明的。如:来说明的。如:来说明的。如:float x,y,z;float x,y,z;x=12.345;x=12.345;y=.12345e2;y=.12345e2;z=12345.e-3;z=12345.e-3;2.3.3 浮点型数据的存储表示浮点型数据的存储表示浮点型数据的存储表示浮点型数据的存储表示浮点型数据的存储表示浮点型数据的存储表示:二进制的浮点形式。如二进制的浮点形式。如二进制的浮点形式。如二进制的浮点形式。如 (0.5)(0.5)1010=(0.1)=(0.1)2 2=(.12=(.120 0)=(12)=(12-1-1)(12.1875)(12.1875)1010=(1100.0011)=(1100.0011)2 2=(.110000112=(.1100001124 4)=(110000112)=(110000112-4-4)而任何一个二进制实数总可以表示成:而任何一个二进制实数总可以表示成:而任何一个二进制实数总可以表示成:而任何一个二进制实数总可以表示成:N=S2N=S2p p 其中:其中:其中:其中:p p、S S都是有符号二进制整数。都是有符号二进制整数。都是有符号二进制整数。都是有符号二进制整数。p p称为阶码称为阶码称为阶码称为阶码,S S称为尾数称为尾数称为尾数称为尾数 注意:注意:注意:注意:S S中无小数点或小数点约定为在最前头。中无小数点或小数点约定为在最前头。中无小数点或小数点约定为在最前头。中无小数点或小数点约定为在最前头。设设设设p p的字长为的字长为的字长为的字长为n1n1,S S的字长为的字长为的字长为的字长为n2n2,则有则有则有则有-2-2n1-1n1-1p2p2n1-1n1-1-1,-1,-2 -2n2-1n2-1S2S2n2-1n2-1-1-1,则一个实数的字长为:则一个实数的字长为:则一个实数的字长为:则一个实数的字长为:n1+n2n1+n2。例如:例如:例如:例如:设设设设 n2=24 n1=8 n2=24 n1=8,则有:则有:则有:则有:-128-128p127,-8388608S8388607p127,-8388608S8388607 即即即即 N=S2N=S2p p 的取值范围是:的取值范围是:的取值范围是:的取值范围是:2 2-128-128 N N22127127,约为约为约为约为 10 10-39-39 N N101038 38 而而而而N N的精度大约为的精度大约为的精度大约为的精度大约为7 7位有效数字位有效数字位有效数字位有效数字2.4 双精度型数据双精度型数据双精度型:字长比浮点型多一倍,一般占用双精度型:字长比浮点型多一倍,一般占用双精度型:字长比浮点型多一倍,一般占用双精度型:字长比浮点型多一倍,一般占用8 8个字节。个字节。个字节。个字节。其中:其中:其中:其中:(n2=48n2=48)+(n1=16n1=16)=64=64 其精度大约为其精度大约为其精度大约为其精度大约为1717位有效数字,浮点型为位有效数字,浮点型为位有效数字,浮点型为位有效数字,浮点型为7 7位精度;位精度;位精度;位精度;中每个浮点常量在机中都是以双精度型来存放和中每个浮点常量在机中都是以双精度型来存放和中每个浮点常量在机中都是以双精度型来存放和中每个浮点常量在机中都是以双精度型来存放和表示的;表示的;表示的;表示的;双精度变量是通过双精度变量是通过双精度变量是通过双精度变量是通过doubledouble保留字来说明的,如:保留字来说明的,如:保留字来说明的,如:保留字来说明的,如:double a,b;a=2.718281828459;b=4.84813681106e-7;main()main()float x;double y;float x;double y;int int i;i;x=0.0;y=0.0;i=1;x=0.0;y=0.0;i=1;while(i=10000)while(i=10000)x=x+100000.0;y=y+100000.0;i=i+1;x=x+100000.0;y=y+100000.0;i=i+1;x=x/10000.0;y=y/10000.0;x=x/10000.0;y=y/10000.0;printfprintf(“x=%f,y=%fn”,x,y,);(“x=%f,y=%fn”,x,y,);运行结果为:运行结果为:运行结果为:运行结果为:可以看出可以看出可以看出可以看出x x有约有约有约有约1.51.5的误差,的误差,的误差,的误差,而而而而y y没有精度损失。没有精度损失。没有精度损失。没有精度损失。2.4 双精度型数据双精度型数据x=99985.179688,y=100000.000000 x=99985.179688,y=100000.0000002.5 变量的初始化变量的初始化 程序中,在变量说明完之后到使用之前,要对其赋初值。如程序中,在变量说明完之后到使用之前,要对其赋初值。如程序中,在变量说明完之后到使用之前,要对其赋初值。如程序中,在变量说明完之后到使用之前,要对其赋初值。如:intint i,j;i,j;int int i=0,j=0;i=0,j=0;i=0;i=0;j=0;j=0;while(i=15)while(i=15)while(i=15)while(i=15)两者是等效的。其它类型变量的初始化方法类似,如:两者是等效的。其它类型变量的初始化方法类似,如:两者是等效的。其它类型变量的初始化方法类似,如:两者是等效的。其它类型变量的初始化方法类似,如:intint i=1,j,k=3;i=1,j,k=3;char bell=7,esc=27,sex=f;char bell=7,esc=27,sex=f;float pi=3.14159;float pi=3.14159;double loge=2.718281828459;double loge=2.718281828459;2.6 变量的存储类变量的存储类变量的两个属性变量的两个属性变量的两个属性变量的两个属性:存在性和可见性存在性和可见性存在性和可见性存在性和可见性存在性存在性存在性存在性:是指变量都具有一个数据类型并以一定的方式存于内是指变量都具有一个数据类型并以一定的方式存于内是指变量都具有一个数据类型并以一定的方式存于内是指变量都具有一个数据类型并以一定的方式存于内存之中。存之中。存之中。存之中。可见性可见性可见性可见性:是指在其作用域中是可见的(活动的),而一旦出了是指在其作用域中是可见的(活动的),而一旦出了是指在其作用域中是可见的(活动的),而一旦出了是指在其作用域中是可见的(活动的),而一旦出了其作用域便不再可见。其作用域便不再可见。其作用域便不再可见。其作用域便不再可见。变量的作用域变量的作用域变量的作用域变量的作用域:是指该变量有定义的程序部分。是指该变量有定义的程序部分。是指该变量有定义的程序部分。是指该变量有定义的程序部分。变量的以上两个属性是由以下四个变量存储类决定的:变量的以上两个属性是由以下四个变量存储类决定的:变量的以上两个属性是由以下四个变量存储类决定的:变量的以上两个属性是由以下四个变量存储类决定的:自动的自动的自动的自动的(autoauto)寄存器寄存器寄存器寄存器(registerregister)静态的静态的静态的静态的(staticstatic)外部的外部的外部的外部的(externextern)2.6.1 自动变量自动变量由保留字由保留字由保留字由保留字autoauto说明或定义的变量。例如:说明或定义的变量。例如:说明或定义的变量。例如:说明或定义的变量。例如:autoauto int int a;a;auto char auto char ch ch=x;=x;auto float d,e;auto float d,e;auto double f1,f2;auto double f1,f2;AutoAuto可省略不写可省略不写可省略不写可省略不写自动变量是局部变量,其作用域局限于其所在的函自动变量是局部变量,其作用域局限于其所在的函自动变量是局部变量,其作用域局限于其所在的函自动变量是局部变量,其作用域局限于其所在的函数或块。数或块。数或块。数或块。自动变量每进入一次函数体,就赋一次指定的初值。自动变量每进入一次函数体,就赋一次指定的初值。自动变量每进入一次函数体,就赋一次指定的初值。自动变量每进入一次函数体,就赋一次指定的初值。2.6.2 寄存器变量寄存器变量寄存器变量是通过在变量说明前面加保留字寄存器变量是通过在变量说明前面加保留字寄存器变量是通过在变量说明前面加保留字寄存器变量是通过在变量说明前面加保留字registerregister来完成的。来完成的。来完成的。来完成的。寄存器变量的用法和作用域规定与自动变量相同。如:寄存器变量的用法和作用域规定与自动变量相同。如:寄存器变量的用法和作用域规定与自动变量相同。如:寄存器变量的用法和作用域规定与自动变量相同。如:registerregister int int x=3;x=3;register char c1,c2;register char c1,c2;register float f1,f2;register float f1,f2;register double d1,d2;register double d1,d2;变量保留在变量保留在变量保留在变量保留在CPUCPU的寄存器中,只是对编译程序的一种建议,的寄存器中,只是对编译程序的一种建议,的寄存器中,只是对编译程序的一种建议,的寄存器中,只是对编译程序的一种建议,而不是强制性的。而不是强制性的。而不是强制性的。而不是强制性的。寄存器变量无地址,无法对其进行求地址运算。寄存器变量无地址,无法对其进行求地址运算。寄存器变量无地址,无法对其进行求地址运算。寄存器变量无地址,无法对其进行求地址运算。寄存器变量说明应尽量靠近其使用的地方,用完后尽快释放。寄存器变量说明应尽量靠近其使用的地方,用完后尽快释放。寄存器变量说明应尽量靠近其使用的地方,用完后尽快释放。寄存器变量说明应尽量靠近其使用的地方,用完后尽快释放。2.6.3 静态变量静态变量静态变量是通过在变量说明前面加保留字静态变量是通过在变量说明前面加保留字静态变量是通过在变量说明前面加保留字静态变量是通过在变量说明前面加保留字staticstatic来说来说来说来说明的,如:明的,如:明的,如:明的,如:static static intint x=1;x=1;static char c1;static char c1;static float f1;static float f1;static double d1,d2;static double d1,d2;静态局部变量的生存期一直延长到程序运行结束。静态局部变量的生存期一直延长到程序运行结束。静态局部变量的生存期一直延长到程序运行结束。静态局部变量的生存期一直延长到程序运行结束。静态局部变量不一定赋初值,编译时对无值的赋予静态局部变量不一定赋初值,编译时对无值的赋予静态局部变量不一定赋初值,编译时对无值的赋予静态局部变量不一定赋初值,编译时对无值的赋予0 0。静态局部变量的作用域与静态局部变量的作用域与静态局部变量的作用域与静态局部变量的作用域与autoauto、registerregister相同。相同。相同。相同。2.6.4 外部变量外部变量外部变量是在函数外部任意位置上定义的全局变量。外部变量是在函数外部任意位置上定义的全局变量。外部变量是在函数外部任意位置上定义的全局变量。外部变量是在函数外部任意位置上定义的全局变量。外部变量的作用域:从变量定义的位置开始,到整个源文件外部变量的作用域:从变量定义的位置开始,到整个源文件外部变量的作用域:从变量定义的位置开始,到整个源文件外部变量的作用域:从变量定义的位置开始,到整个源文件结束为止。结束为止。结束为止。结束为止。外部变量的生存期:整个程序的运行期间。外部变量的生存期:整个程序的运行期间。外部变量的生存期:整个程序的运行期间。外部变量的生存期:整个程序的运行期间。外部变量与局部变量同名时,外部变量被屏蔽。外部变量与局部变量同名时,外部变量被屏蔽。外部变量与局部变量同名时,外部变量被屏蔽。外部变量与局部变量同名时,外部变量被屏蔽。在每个引用外部变量的函数中都对相应的外部变量加以说明。在每个引用外部变量的函数中都对相应的外部变量加以说明。在每个引用外部变量的函数中都对相应的外部变量加以说明。在每个引用外部变量的函数中都对相应的外部变量加以说明。例如:例如:例如:例如:intint x=123;x=123;main()main()extern extern int int x,y;x,y;printfprintf(“%dn%dn”,x,y);(“%dn%dn”,x,y);intint y=321;y=321;

    注意事项

    本文(第2章 C语言程序设计.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开