ImageVerifierCode 换一换
格式:DOCX , 页数:39 ,大小:58.18KB ,
资源ID:6309228      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6309228.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第二章第一节数据类型和表达式.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第二章第一节数据类型和表达式.docx

1、第二章第一节数据类型和表达式第二章 C+语言基础2.1 数据类型和表达式一、基本数据类型 1整形:int 2字符型:char 3浮点型(实型): float(单精度)double(双精度)long double(长精度) 4空值型:void,用于函数和指针 4种修饰符:signed有符号 unsigned无符号 long长型 short短型 都适用于整形和字符型;long还适用于双精度浮点型。 表2.1 C的基本数据类型 P23 说明:(1)【int】可以省略,即在int之前有修饰符出现时,可以省去关键字;(2)char型和各种int型统称为整数类型。二、常量和变量 1常量 在程序中不被改变的

2、量。 (1)整形常量:1) 十进制: 由09的10个数字组成,例:56, 702等;2) 八进制: 以o为前缀,其后由07的数字组成,例:o76,o123等;3) 十六进制: 以ox或OX为前缀,其后由09的数和AF的字母组成(大小写均可),例:ox7A,OX8ef等。整形常量中的长整形用L(或l)作后缀表示,例:327675L,4793l;整形常量中的无符号型用U(或u)作后缀表示,例:327675U,4793u; (2)浮点型常量:只有十进制表示组成:整数部分小数部分表示方法:小数表示法: 5., .25, 4.07等科学计数法: 3.2E-5, 5.7e10等 (3)字符常量: 表示方法

3、:用单引号括起来,例:A, 等;转义序列表示:n(回车),r(换行)等。见表2.2(P25) (4)字符串常量:例:“This is a string.”“abcdefn”“tabctxya! 续行标志mnptefg!” 字符常量与字符串常量的区别:字 符 常 量字 符 串 常 量用单引号括起;例:A用双引号括起;例:“abcdef”在内存中,占一个字节;在内存中,占多个字节;具有加、减法运算;例:AB1不具有加、减法运算。 (5)符号常量: 例:pi3.1415926;定义方法:const int size80;将size定义为符号常量,并初始化。 2变量 定义:在程序执行中,其值可以改变的

4、量。 三要素:名字,类型,值 (1)变量的名字 按标识符的规定来命名变量。 注意:系统规定的保留字(关键字)不可作为变量名、函数名、类型名等使用; “见名知意”,有助于记忆,增加可读性; 用多个单词构成的名字,常用下划线来分割单词或中间单词的第一个字母用大写,如:is_byte或isByte; 变量名字一般常用小写字母。 (2)变量的类型 每种变量都应该具有一种类型,在定义或说明变量时要指出其类型。 基本类型 构造类型 (3)变量的值 变量所表示的数据值 变量的地址值 例: char c; c=a;变量c被赋值后,在内存中对应存在着一个内存地址值,地址中存放着一个C的值。 (4)变量的定义 任

5、何一个变量在引用之前必须定义。与C语言不同之处:C可以在程序中随时定义变量,不必集中在执行语句之前。格式: 例: int a ,b ,c; int a(3); int a3; double x ,y ,z; 说明:在同一个程序块内,不可以定义同名变量,在不同的程序块内,可以定义同名变量; 在定义变量时可以给变量赋初始值,即初始化。 例:int size 100; double f 3.65; char c a; 三、数组类型数组是一种构造类型,是数目固定、类型相同的若干变量的有序集合。1数组的定义格式: 例:int a3;char b35;float c357;可以用符号常量来指定数组的大小。

6、例:const int size80; int msize; 2. 数组的赋值 (1)数组元素的表示:格式: 常量,从0开始,在内存中按下标的升序顺序连续存放。1)一维数组: 例:int a5; a0,a1,a2,a3,a42)二维数组:例:int b23; 6个元素 b00, b01, b02, b10, b11, b12(2)数组元素赋初值: 数组元素的个数初始值表中数据项的个数1) 一维数组:例:int a5=1,2,3,4,5; int a4=5,4; a0=5, a1=4, a2=0, a3=02) 二维数组 例:int b23=1,2,3,4,5,6;或:int b23=1,2,3

7、,4,5,6;int b23=1,2,3; b00=1, b01=2, b10=3, 其余为0(3)数组元素的赋值直接赋值:例:int m3; m01;m12;m23;用循环语句:例:int a10; for(int i=0;i10;i+) aii*2+1;赋值结果:a01,a13,a25,a919.3.字符数组例:char s14=a,b, c,d;s1 一维数组,四个元素分别是一个有效字符char s25a,b,c,d,0; s2 一维数组,是一个字符串,它存放着字符常量“abcd”。初始化为字符串的简单方式:char s25“abcd”;s20a,s21b,s22c,s23d,s240.

8、char s25“abcde”; 这种初始化不正确,因为字符串的结束符“0”是系统自动加上的.可以用如下格式:char s3“abcde”;四、枚举类型 枚举是一种构造的数据类型,是若干个有名字的整形常量的集合。1 枚举模式的定义格式:enum ;例:enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat;说明:day枚举名,枚举表中有7个枚举符枚举符的值:默认情况下,最前边一个为0,后一个是前一个值加1显示赋值:定义时直接赋值;隐式赋值:按默认值。例:enum day Sun7,Mon1,Tue,Wed,Thu,Fri,Sat;Sun7,Mon1,Tue2,Wed3,Thu

9、4,Fri5,Sat62 枚举变量的定义格式:enum ;例如:enum day d1,d2,d3;d1,d2,d3是属于枚举名为day的枚举变量,它们的值就是上面枚举表中规定的7个枚举符之一。enum day Sun,Mon,Tue,Wed,Thu,Fri,Sat d1,d2,d3;enum color RED,BLUE,YELLOW,BLACK,WHITE;enum color c1,c2,c3; c1,c2,c3是三个具有color枚举名的枚举变量。3 枚举变量的值 枚举变量的值是该枚举变量所属的枚举模式的枚举表的某一个枚举符。 例: d1Sum;d2Mon;c1RED;c2BLUE;上

10、述给枚举变量的赋值都是正确的。而下面的赋值是错误的:d3=YELLOW;c33;因为 d3 枚举变量对应的枚举符中没有YELLOW。 c3不能用一个整型数值直接赋值。五、指针和引用 1指针 指针是一种数据类型,具有指针类型的变量称为指针变量,是一种特殊的变量。(1)定义:指针是用来存放某个变量在内存中的地址值。指针的类型是:它所指向的变量的类型。分类:指向数组的指针 指向函数的指针 指向文件的指针 指向指针的指针例:int a5; int * p &a; 说明:p是一个指向int型变量的指针; &a表示变量a的地址值,p的数值便是变量a的地址值;(2)格式: * , * 例:int * pi;

11、 /pi是一个指向int型变量的指针 float * pl; /pl是一个指向float型变量的指针 char * pc; /pc是一个指向char型变量的指针 char (* pa)3;/pa是一个指向一维数组的指针 int (* pf)(); /pf是一个指向函数的指针,该函数的返回值为int型数值 int * * pp; /pi是一个指向指针的指针,即二级指针(3)赋值:任何一种类型的指针所赋的值都是内存地址值。但是,不同类型的指针的内存地址值的表示不尽相同。一般变量、数组元素、结构成员等其地址值都表示为变量名前加运算符 &。例如:int a,b10;变量 a 的地址值表示为 &a ;数

12、组元素 b3 的地址值表示为 &b3等等。 数组的地址值用该数组名来表示。例如:int a10, * p a; p 是一个指向数组a的指针,即指向a数组的首元素。又例如:int b23,(* p)3; p = b;b00,b01, b02,b10,b11, b12, p 是一个指向数组b的指针,p所指向的是3个元素的一维数组,而b是一个二维数组,将b赋值给p,是让p指向二维数组的第O行,因为二维数组可以被看成为若干个行数组组成的,每个行数组对应是一个一维数组,这个一维数组是由若干个列元素组成。上面所说的“第O行”是指这个二维数组的第O行所对应的一维数组, 它是由3个int型元素组成的。函数的地

13、址值可用该函数的名字来表示,一个指向函数的指针可用它所指向的函数名字来赋值。例如:double sin(double x); double (* pf)(); pfsin;pf 是一个指向函数的指针,它所指向的函数是sin,这里用sin给pf赋值,实际上是让pf指针指向sin函数在内存中的入口地址。上面列举了一些不同类型指针的赋值,有些指针的赋值在后面还会看到,例如,指向文件的指针等等。定义了一个指针后,必须先给它赋值后才能引用,否则将有可能造成系统的故障。(4)指针的运算 指针是一种特殊的变量,指针运算是很有限的。一般来说,指针所允许的运算有如下4 种:1) 赋值运算一个指针所指向的变量的地

14、址值一个数组的地址值一个函数在内存中的入口地址值一个暂时不用的指针,为了安全起见,可以将O值赋给指针,使它变为空指针。还可将一个已被赋值的指针赋给另外一个相同类型的指针。例如:int a,* p &a,* q; qp;使q指向与指针p所指向的变量相同,即p和q都是指向变量a的指针。 2) 一个指针可以加上或减去一个整数值,包括加1或减1运算。3) 在一定条件下,两个指针可以相减。4) 在一定条件下,两个指针可以相比较。 2指针和数组在C中,数组的元素可以用下标表示,也可用指针表示,但是最好还是用指针表示,因为指针表示要比下标表示处理起来更快。因此,C+ 程序中,尽量使用指针来引用数组元素。下面

15、介绍数组元素的指针表示法。 (1) 一维数组的指针表示法例如:int a5; a 是一维数组名,它有 5个int型变量。用下标方法表示如下:ai 其中:i=0,1,2,3,4。用指针方法表示如下:* (ai) 其中 a 是数组名 C中规定任何一个数组的名字是一个常量指针,该指针的值便是该数组的首元素的地址值。在一维数组中,数组名就是首元素地址。在上例中,a 与 &a0 是一样的。请注意:常量指针与变量指针的区别。在下例中:int a10, * p;pa;下列表达式是合法的:p+1,a+2,p=p+1,p-a下列表达式是非法的:aa+1,aa-1 (2) 二维数组的指针表示法例如:int b25

16、;b 是二维数组名, 它有10个int型变量。用下标方法表示如下:bij 其中:i=0,1;j=0,1,2,3,4 用指针方法表示如下: * (* (bi)j) 其中:i=0,1;j=0,1,2,3,4这种表示方法可以这样理解:b00,b01,b02,b03,b04b0jb10,b11,b12,b13,b14b1j一个二维数组可以看作是一个一维数组, 它的元素又是一个一维数组。对 b25来讲, 可以看成是具有2个元素的一维数组, 即称行数组, 每个元素(即每个行数组)又是具有5个元素的一维数组,称为列数组。因此,b25可以看成为2个元素的一维行数组和5个元素的一维列数组组成。前面讲过了一维数组

17、的指针表示,将二维数组的行、列的一维数组都用指针表示,使得到如下形式: * (*(b+i)+j) 这是一个二级指针。再将二维数组的行数组用下标表示,列数组用指针表示,得到如下形式:*(bij)再将二维数组的行数组用指针表示, 列数组用下标表示, 又得到如下形式:(*(b+i)j另外, 按二维数组各个元素在内存中存放的顺序,用指向数组首元素的一级指针表示如下:* (&b00+5*i+j) 其中,&b00是b数组的首元素地址(3) 三维数组的指针表示 略例2.1 分析下列程序的输出结果#include void main() static int a5=5,4,3,2,1; int i,j; i=

18、a0+a4; j= *(a+2)+ *(a+4); coutiendlj;输出结果:6 4说明:该程序中,出现的关键字static是说明符,说明数组a是静态类整型数组。经过初始化后,a数组的各个元素将获取数值。i和j是两个int型变量,它们用来存放两个数组元素的和,这里使用了两种不同方式来引用数组元素:一种是下标方式,另一种是指针方式。最后, 通过一个输出语句将变量i和j的值显示在屏幕上。例22分析下列程序的输出结果#include void main() static char s1“abcde”;static char s2m,n,p,q,0; char * pss1; couts1“or

19、”s2; coutn; couts21s22s13s14endl; cout *ps *(ps2)*(ps4)*ps2;输出结果:abcde or mnpq npde ace99说明:该程序中出现了两个字符数组s1和s2, 并且初始化了。又定义一个指针ps指向s1数组的首地址。使用输出表达式输出一个字符串时,使用字符数组名或指向该字符串首地址的指针名。使用输出表达式输出字符数组中某个元素时,可直接引用该数组元素,用下标或指针表示都可以。 程序中,输出表达式 * ps+2 的值为99,因为 * ps 是字符 a,它的 ASCII码值为97,所以,该表达式值为99,实际上是字符c的ASCII码值。

20、例23分析下列程序的输出结果#include void main() static int b31,2,3,4,5,6; b027; b128;cout* * b“t” * * (b+1)“t” * ( * (b+1)+2)“n”; cout7 b10=4, b11=0 b12=08 b20=5, b21=6,b22=0*b * (* (b+0)+0) b00 *(b+1) * (* (b+1)+0) b10 * ( * (b+1)+2) b12 输出结果:1 4 8 15说明: 程序中,b是一个被初始化的二维数组, 又对它的两个元素赋了值, 即改变了它初始化后的数值。输出* * b, * *

21、 (b+l) 和 * ( * (b+1)+2) 的值分别为 1,4,8这与 b00, b10 和 b12 的值是相同的。又由于 b02,b1 2和b22的值分别为7,8和0,因此, 这三个元素的和为l5。 3引用引用也是一种特殊类型的变量,它不同于指针。引用通常被认为是另一种变量的别名。定义格式: & ();或者: & =;一般情况下,定义引用时必须初始化。例如: int a 3; int &ma;m 是一个引用,它是变量a的别名。所有在引用上所施加的操作, 实质上就是在被引用者上的操作。例如:m=m+5; 实质上是a加5,使a值改变为8。可以将一个引用赋给某个变量,则该变量将具有被引用的变量

22、的值。例如:int n m;n具有被m引用的变量a的值,即8。又例如:int * p &m;这是将指针p指向a变量的地址。指针与引用的区别:指针是通过地址间接访问某个变量,而引用是通过别名直接访问某个变量;引用必须初始化,而一旦被初始化后不得再作为其他变量的别名。一般情况下,初始化引用时需要用一个相同类型变量名。但有时也可用一个常量对一个引用初始化,这时系统要建立一个临时变量。例如:int &d120;将变为:int t =120;int &d=t; t 是系统建立的临时变量。 也还可以用一个不同类型的变量来初始化引用, 同样系统也会生成一个临时变量。例如:float f5.6;int &d

23、f;将变成: int tempint(f); int &e temp;引用的用途是用来作函数的参数或函数的返回值。例2.5分析下列程序的运行结果#include void main() int val(5); int &refv=val; refv=refv+5; coutvalendl; int * p=&refv,val1(refv); cout*p“t”vallendl;输出结果:1010 10说明:从该例中可以看出:(1) 引用在定义时要初始化。(2) 对引用的操作就是对被引用的变量的操作。(3) 可以用某个引用的地址值赋给一个指针,而指针则指向被引用的变量。 (4) 可以用某个引用给

24、一个变量赋值 ,该变量的值便是被引用的变量值。 以上是对引用这种特殊变量的初步理解。六、运算符C+中运算符比较多, 有些不同功能的运算符使用了相同的符号, 运算符还具有较多的优先级, 还有结合性等, 这些将给学习和使用运算符带来一些困难。同学们一定要把这节学好, 为以后编程打下基础。学运算符时要掌握每种运算符的功能、优先级和结合性以及在使用中应注意的事项。 下面先按其功能分类进行讲解。 1算术运算符(1)普通算术运算符单目算术运算符: - (取负),+ (取正) 单目运算符的优先级高于双目运算符。双目算术运算符: (相加)、 (相减)、* (相乘)、/ (相除) 适用于int ,float和

25、double变量% (取余数):只用于 int 型运算优先级:*, / 和 % 高于 ,求两个数的余数的公式如下 :已知:% 其余数为:余数 = -*其中,是除以所取的整数商。例如:5%8 余数58*05 16%8 余数168*20 37%8 余数37845(2)增1和减1运算符单目运算符:(增1), 一一(减1)这两个运算符功能相近, 下面着重讲解 。 运算符也是一个算术运算符, 但与上面介绍的普通算术运算符有不同之处, 因此, 单独讲解。1)运算符的功能:由该运算符组成的表达式具有一定的值;由该运算符组成的表达式计算后,其变量值要发生改变。这种功能并不是所有运算符都具有的。例如:int a

26、(1); a=1a; 表达式a的值为2,它是a+1的值;变量 a 的值改变为 2,它是aa1的值。可见,运算符会使表达式产生一个值,同时变量又改变了值。通常称后者为一种副作用。在 C中具有副作用的运算符除和外,还有赋值运算符。2)运算符作用于变量有两种方式: 前缀方式:运算符作用在变量的前边,上例属于前缀方式,后缀方式:运算符作用在变量的后边。例如:int b(2); b2 b; 表达式b的值为2,b变量的值为33)结论:参看下表来理解运算符的前缀运算表达式的值为原来变量值加 1,后缀运算表达式的值为原变量值;不论前缀运算还是后缀运算变量的值都加1 。运算符的前缀运算表达式的值为原来变量值减1,后缀运算表达式的值为原变量值;不论前缀运算还是后缀运算变量的值都减1 。表21 与运算比较前缀方式:例int a(1);a;或a;后缀方式:int b(2); b;或b;原变量值运算后变量值前缀运算表达式的值原变量值运算后变量值后缀运算表达式的值不变1原变量值12原变量值12不变2原变量值13原变量值2不变1原变量值10原变量值10不变2原变量值11原变量值2 2关系运算符关系运算符都是双目的, 共有如下6种: (大于), (大

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2