C程序设计教程与实验指导杨国兴C基础.pptx

上传人:莉*** 文档编号:87415957 上传时间:2023-04-16 格式:PPTX 页数:33 大小:233.95KB
返回 下载 相关 举报
C程序设计教程与实验指导杨国兴C基础.pptx_第1页
第1页 / 共33页
C程序设计教程与实验指导杨国兴C基础.pptx_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《C程序设计教程与实验指导杨国兴C基础.pptx》由会员分享,可在线阅读,更多相关《C程序设计教程与实验指导杨国兴C基础.pptx(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第2章章 C+基础基础 2.1常量与变量2.2指针与引用2.3动态内存分配2.4位运算符2.5名字空间第1页/共33页2.1 2.1 常量与变量常量与变量2.1.1常量 常量常量常量常量:在程序运行中,其值不能被改变的量称为常量。常:在程序运行中,其值不能被改变的量称为常量。常量又分为直接常量和符号常量两种。量又分为直接常量和符号常量两种。1.1.直接常量直接常量直接常量直接常量:直接使用数值或文字表示的值:直接使用数值或文字表示的值(1 1)整型常量整型常量整型常量整型常量 如:如:1010、-20-20、0 0 还可以八进制或十六进制表示:如还可以八进制或十六进制表示:如034034、0

2、 x230 x23 不带后缀的整型常量为不带后缀的整型常量为 intint型,带后缀型,带后缀 LL或或 l l可表示可表示长整型常量,带后缀长整型常量,带后缀 UU或或 uu表示无符号整型常量表示无符号整型常量(2 2)实)实型常量型常量型常量型常量 如:、如:、2.3E+22.3E+2、不带后缀的实型常量为不带后缀的实型常量为 doubledouble型,带后缀型,带后缀 FF或或 f f可可表示单精度实型常量表示单精度实型常量第2章 C+基础第2页/共33页2.1 2.1 常量与变量常量与变量2.1.1常量(续一)(3 3)字符型常量字符型常量字符型常量字符型常量 以单引号括起来的单个字

3、符:如以单引号括起来的单个字符:如 aa、33、*转义字符转义字符:键盘不便于直接输入的字符,如回车符、:键盘不便于直接输入的字符,如回车符、制表符等,通常以制表符等,通常以“”“”开头开头表表2.32.3转义字符转义字符 双引号双引号单引号单引号字符字符 aa响铃响铃bb退格退格nn换行换行 r r回车回车t t水平制表水平制表vv垂直制表垂直制表0000003 3位八进制数所代表的位八进制数所代表的字符,如字符,如 101101代表代表AAxhhxhh 2 2位位1616进制所代表的字符,进制所代表的字符,如如 x41x41代表代表AA第2章 C+基础第3页/共33页2.1 2.1 常量与

4、变量常量与变量2.1.1常量(续二)(4 4)boolbool型常量型常量型常量型常量 boolbool常量只有两个:常量只有两个:true(true(真真)、false(false(假假)在内存中占有一个字节的存储空间在内存中占有一个字节的存储空间(5 5)字符串常量字符串常量字符串常量字符串常量 由一对双引号括起来的若干字符,如由一对双引号括起来的若干字符,如“abc”“abc”字符串常量的末尾自动加入结束标志字符串常量的末尾自动加入结束标志 00,因此字符,因此字符串在内存中占有的字节数为串在内存中占有的字节数为 字符个数字符个数+1+1 若字符串中包含特殊字符,如若字符串中包含特殊字符

5、,如、回车、制表符等,、回车、制表符等,也应以他们对应的转义字符形式表示也应以他们对应的转义字符形式表示第2章 C+基础第4页/共33页例 检测基本数据类型所占的字节数#include void main()cout int:sizeof(int)endl;cout short:sizeof(short)endl;cout long:sizeof(long)endl;cout float:sizeof(float)endl;cout double:sizeof(double)endl;cout long double:sizeof(long double)endl;cout char:size

6、of(char)endl;cout bool:sizeof(bool)endl;返 回第2章 C+基础第5页/共33页2.1 2.1 常量与变量常量与变量2.1.1常量(续三)2.2.符号常量符号常量符号常量符号常量:直接使用符号表示的常量值,包括宏定义:直接使用符号表示的常量值,包括宏定义和和constconst定义的符号常量。定义的符号常量。(1 1)宏定义宏定义宏定义宏定义 语法形式:语法形式:#define#define宏名宏名 字符串字符串 如:如:程序编译前会自动用字符串取代程序中出现的宏名程序编译前会自动用字符串取代程序中出现的宏名(2 2)constconst定义定义 语法形式

7、:语法形式:constconst类型说明符类型说明符 常量名常量名=常量值;常量值;如:如:constfloatpi=3.14;constfloatpi=3.14;宏定义在预编译时,只进行简单的替换,不做语法检宏定义在预编译时,只进行简单的替换,不做语法检查查 宏定义没有数据类型,而宏定义没有数据类型,而constconst定义的符号常量是有定义的符号常量是有数据类型的。数据类型的。第2章 C+基础第6页/共33页例 使用符号常量#include void main()const int A=10;cout PI*10*10 n;cout A+20 n;返 回第2章 C+基础第7页/共33页2

8、.1 2.1 常量与变量常量与变量2.1.2变量 1.1.变量的定义变量的定义变量的定义变量的定义:程序运行中值可以被改变的量。变量必:程序运行中值可以被改变的量。变量必须先定义再使用。须先定义再使用。变量定义的一般形式变量定义的一般形式变量定义的一般形式变量定义的一般形式 语法形式:数据类型语法形式:数据类型 变量名变量名1,1,变量名变量名2,2,变量名变量名n;n;如:如:inta,b,c;inta,b,c;2.2.变量的初始化变量的初始化 含义:定义变量的同时为其赋初值含义:定义变量的同时为其赋初值 两种形式:用赋值号两种形式:用赋值号(“=”)(“=”)或用括号或用括号如:如:flo

9、ata=3.14;floata=3.14;或或 floata(3.14);floata(3.14);第2章 C+基础第8页/共33页例例2.3 从键盘输入从键盘输入n的值,计算从的值,计算从1到到n的累加和。的累加和。#include#includevoidmain()voidmain()intn,sum=0;intn,sum=0;cinn;cinn;inti;inti;for(i=1;i=n;i+)for(i=1;i=n;i+)sum+=i;sum+=i;coutsumn;coutsumn;返 回第2章 C+基础第9页/共33页2.2 2.2 指针与引用指针与引用2.2.1指针 1.1.地址

10、与指针的概念地址与指针的概念地址与指针的概念地址与指针的概念(1 1)内存地址内存地址内存地址内存地址计算机的内存储器被划分成一个个的计算机的内存储器被划分成一个个的存储单元存储单元,这些存储,这些存储单元按一定的规则单元按一定的规则编号编号,这个,这个编号编号就是存储单元的就是存储单元的地址地址。每个存储单元的大小为一个字节,每个单元有一个唯一的每个存储单元的大小为一个字节,每个单元有一个唯一的地址。地址。(2 2)变量的地址变量的地址变量的地址变量的地址在程序中定义的所有变量,都要分配相应的在程序中定义的所有变量,都要分配相应的存储单元存储单元,不,不同类型的数据所需要的存储空间的大小不同

11、。同类型的数据所需要的存储空间的大小不同。系统分配给变量的内存空间的起始单元地址系统分配给变量的内存空间的起始单元地址称为该变量的称为该变量的地址。地址。如:如:intainta;则则0 x30000 x3000为变量为变量a a的地址的地址0 x3000 0 x3001 0 x3002 0 x3003第2章 C+基础第10页/共33页2.2 2.2 指针与引用指针与引用2.2.1指针2.2.指针与指针变量指针与指针变量指针与指针变量指针与指针变量(1 1)指针:指针:指针:指针:一个变量的一个变量的地址地址也称为该变量的也称为该变量的指针指针。(2 2)指针变量:指针变量:指针变量:指针变量

12、:用于存储其它变量的指针用于存储其它变量的指针(即地址即地址)的变量。的变量。指针变量的定义:指针变量的定义:数据类型数据类型*指针变量名;指针变量名;如:如:int*p1int*p1;float*p2;float*p2;char*p3;char*p3;注意:指针变量所指向的变量类型不能改变注意:指针变量所指向的变量类型不能改变指针变量必须指向具体内存地址才能引用,如:指针变量必须指向具体内存地址才能引用,如:int*p;*p=10;int*p;*p=10;(3 3)指针运算符指针运算符指针运算符指针运算符(*)(*)与取地址运算符与取地址运算符与取地址运算符与取地址运算符(&)(&)第2章

13、C+基础第11页/共33页例2.4 通过指针变量存取变量的值#include void main()int a,*p1;double b,*p2;char c,*p3;p1=&a;p2=&b;p3=&c;*p1=10;*p2=11.2;*p3=A;cout a endl;cout b endl;cout c endl;程序运行结果为:程序运行结果为:10A100 x2000ap111.20 x2004bp2A0 x200Ccp3第2章 C+基础第12页/共33页例2.5 输入a和b两个数,按从小到大的顺序输出#include void main()int a,b;int*p1,*p2,*p;c

14、out a b;p1=&a;p2=&b;if(*p1 *p2)p=p1;p1=p2;p2=p;cout min=*p1 max=*p2 endl;程序运行结果为:程序运行结果为:请输入两个整数:3010min=10max=30&ap1&bp2p30a10b&bp1&ap2&ap30a10b第2章 C+基础第13页/共33页2.2 2.2 指针与引用指针与引用2.2.12.2.1指针指针3.3.指针作为函数的参数指针作为函数的参数指针作为函数的参数,实际上传递的是变量的地址,进行指针作为函数的参数,实际上传递的是变量的地址,进行的是的是地址传递地址传递。例例2.62.6指针作为函数参数,被调函数

15、中交换参数值指针作为函数参数,被调函数中交换参数值#include#include void swap(int*x,int*y);void swap(int*x,int*y);void main()void main()int a,b;int a,b;a=10;a=10;b=20;b=20;swap(&a,&b);swap(&a,&b);cout a ,b endl;cout a ,b endl;void swap(int*x,int*y)void swap(int*x,int*y)int temp;int temp;temp=*x;temp=*x;*x=*y;*x=*y;*y=temp;*y

16、=temp;第2章 C+基础第14页/共33页2.2 2.2 指针与引用指针与引用例例2.62.6程序运行过程中变量值的变化分析程序运行过程中变量值的变化分析yyb10ax20by&ax&b10temp20ax20by10temp&aax&bb10temp&a&btemp10a20&a&b2010(a)(b)(c)(d)程序运行结果为:程序运行结果为:2020,1010第2章 C+基础第15页/共33页2.2 2.2 指针与引用指针与引用2.2.22.2.2引用引用1.1.引用的概念引用的概念引用的概念引用的概念引用是一种特殊的变量,可以认为是一个变量的别名。引用是一种特殊的变量,可以认为是一

17、个变量的别名。定义引用的一般格式定义引用的一般格式:类型说明符类型说明符&引用名引用名 变量名;变量名;如:如:int a=1;int a=1;int&b=a;int&b=a;首首先先定定义义变变量量a a,并并初初始始化化为为1 1,然然后后定定义义引引用用b b,并并初初始始化化为为a a,即,即b b是是a a的别名,因此的别名,因此a a和和b b是同一个单元。是同一个单元。注注意意:定定义义引引用用时时一一定定要要初初始始化化,指指明明该该引引用用变变量量是是谁谁的的别名。别名。第2章 C+基础第16页/共33页例2.7 引用的使用#include void main()int a=

18、1;int c=10;int&b=a;cout a ,b,c endl;b=c;cout a ,b,c endl;b=20;cout a ,b,c endl;程序运行结果:程序运行结果:1 1,1 1,10101010,1010,10102020,2020,1010定义引用b,并将其作为a的别名将c的值赋给b,不是将b作为c的别名第2章 C+基础第17页/共33页2.2 2.2 指针与引用指针与引用2.2.2引用(续一)2.2.引用作为函数的参数引用作为函数的参数引用作为函数的参数引用作为函数的参数例例2.82.8写一个函数,用引用作为参数,交换函数中两个写一个函数,用引用作为参数,交换函数中

19、两个变量的值。变量的值。#include#include void swap(int x,int y);void swap(int x,int y);void main()void main()int a,b;int a,b;a=10;a=10;b=20;b=20;swap(a,b);swap(a,b);cout a ,b endl;cout a ,b endl;void swap(int&x,int&y)void swap(int&x,int&y)int temp;int temp;temp=x;temp=x;x=y;x=y;y=temp;y=temp;程序运行结果为:程序运行结果为:202

20、0,1010第2章 C+基础第18页/共33页2.2 2.2 指针与引用指针与引用2.2.2引用(续二)例程序运行过程中参数值的变化图示例程序运行过程中参数值的变化图示10axby20axby10temp20axby10temp10axby10temp20202010注意:引用作参数时,函数的实参与形参在内存中共用存储单元,因此形参的变化会使实参同时变化。返 回第2章 C+基础第19页/共33页2.3 2.3 动态内存分配动态内存分配在程序运行过程中根据需要动态分配存储空间,不需要时在程序运行过程中根据需要动态分配存储空间,不需要时还可以将空间释放,通过还可以将空间释放,通过newnew和和d

21、eletedelete运算符实现。运算符实现。1.1.动态分配一个数据的存储空间动态分配一个数据的存储空间动态分配一个数据的存储空间动态分配一个数据的存储空间通过通过newnew运算符实现动态分配内存,格式如下:运算符实现动态分配内存,格式如下:newnew类型名(初值)类型名(初值)如:如:int*p1,*p2;int*p1,*p2;p1=newint(10);p1=newint(10);p2=newint;p2=newint;运算符运算符deletedelete用来释放由运算符用来释放由运算符newnew动态分配的存储空间。动态分配的存储空间。使用格式如下:使用格式如下:deletedel

22、ete指针名指针名;如:如:deletep1;deletep1;第2章 C+基础第20页/共33页2.3 2.3 动态内存分配动态内存分配2.2.动态分配多个连续的数据存储空间动态分配多个连续的数据存储空间动态分配多个连续的数据存储空间动态分配多个连续的数据存储空间通过通过newnew运算符动态分配数组,格式如下:运算符动态分配数组,格式如下:newnew类型名类型名 整型表达式整型表达式 如:如:int*p1;int*p1;p1=newint10;p1=newint10;用用deletedelete删除动态数组时,要在指针前加删除动态数组时,要在指针前加“”。格式如。格式如下:下:delet

23、edelete指针名指针名;如:如:deletep1;deletep1;第2章 C+基础第21页/共33页例2.9 动态内存分配的使用#include void main()int*p1,*p2;p1=new int(10);p2=new int10;int i;for(i=0;i10;i+)*(p2+i)=i;cout *p1 endl;for(i=0;i10;i+)cout *(p2+i);cout endl;for(i=0;i10;i+)cout p2i “”;/p2i 与*(p2+i)所访问的数据相同cout endl;delete p1;delete p2;程序运行结果为:程序运行结

24、果为:1001234567890123456789p2 1 2 3 4 5 6 7 8 9 10 返 回第2章 C+基础第22页/共33页2.4 2.4 位运算符位运算符2.4.1位运算符C+C+使用位运算符可以对数据按二进制位进行操作。使用位运算符可以对数据按二进制位进行操作。1.1.按位与(按位与(按位与(按位与(&):将两个操作数对应的每一位分别进行逻:将两个操作数对应的每一位分别进行逻辑与辑与 如:如:9&79&799:000010010000100177:00000111000001119&79&7:00000001000000019&79&7结果为结果为1 12.2.按位或(按位或

25、(按位或(按位或(|):将两个操作数对应的每一位分别进行逻:将两个操作数对应的每一位分别进行逻辑或辑或3.3.按位异或(按位异或(按位异或(按位异或():将两个操作数对应的每一位分别进:将两个操作数对应的每一位分别进行异或行异或第2章 C+基础第23页/共33页2.4 2.4 位运算符位运算符2.4.1位运算符(续)4.4.按位取反(按位取反(按位取反(按位取反():单目运算符,对二进制的每一位取反:单目运算符,对二进制的每一位取反5.5.左移位(左移位(左移位(左移位():使运算符左侧的操作数的各位左移指:使运算符左侧的操作数的各位左移指定位数,低位补定位数,低位补0 0,高位溢出部分舍弃。

26、如,高位溢出部分舍弃。如 727):使运算符左侧操作数的各位右移指定:使运算符左侧操作数的各位右移指定位数,溢出的低位舍弃,对无符号数和有符号中的正数,高位位数,溢出的低位舍弃,对无符号数和有符号中的正数,高位补补0 0,对于有符号数中的负数,有些系统补,对于有符号数中的负数,有些系统补0 0(称为逻辑右移),(称为逻辑右移),有些系统补有些系统补1 1(称为算术右移)。如(称为算术右移)。如 7272的结果是的结果是1 1。0 00 00 00 00 01 11 11 170 00 00 01 11 11 10 00 072第2章 C+基础第24页/共33页2.4 2.4 位运算符位运算符2

27、.4.22.4.2位运算符应用举例位运算符应用举例例例2.102.10输入变量输入变量a a,b b的值,并将变量的值,并将变量a a的低的低4 4位置为位置为0 0,将变量将变量b b的低的低4 4位置为位置为1 1。#include#includevoidmain()voidmain()inta,b;inta,b;cina;cina;cinb;cinb;a=a&(0 xf);a=a&(0 xf);b=b|0 xf;b=b|0 xf;coutaendl;coutaendl;coutbendl;coutbendl;0 xf为十六进制数,它的后四位为1,其他位均为0。取反后后四位为0,其他位均为

28、1。若输入若输入2525和和2323,程序,程序执行结果为:执行结果为:16163131 返 回第2章 C+基础第25页/共33页2.5 2.5 名字空间名字空间2.5.12.5.1名字空间的定义与使名字空间的定义与使用用1.1.名字空间的定义名字空间的定义名字空间的定义名字空间的定义 namespacenamespace名字空间名名字空间名 例例例例 :namespaceNameSpace1namespaceNameSpace1 inta;inta;intf1()intf1()floatf2()floatf2()(1)名字空间只能在全局范围那定义,但名字空间是可以嵌套的。(2)一个名字空间可

29、以用另一个名字作为它的别名。例如使用ns1作为上述名字空间NameSpace1的别名,可以用下面的语法:namespacens1=NameSpace1;第2章 C+基础第26页/共33页2.5 2.5 名字空间名字空间2.5.1名字空间的定义与使用2.名字空间的使用名字空间的使用(1)使用域运算符格式如下:名字空间名名字空间名:标识符标识符例如下面一行程序,可以访问名字空间NameSpace1中的变量a和函数f1()。NameSpace1:a=NameSpace1:f1();第2章 C+基础第27页/共33页例例2.11 2.11 名字空间的定义与使用名字空间的定义与使用#include#in

30、cludenamespacens1namespacens1 intfun(intx,inty);intfun(intx,inty);namespacens2namespacens2 intfun(intx,inty);intfun(intx,inty);namespacens3namespacens3intfun(intx,inty);intfun(intx,inty);intns1:fun(intx,inty)intns1:fun(intx,inty)returnx+y;returnx+y;intns2:fun(intx,inty)intns2:fun(intx,inty)returnx*y

31、;returnx*y;intns2:ns3:fun(intx,inty)intns2:ns3:fun(intx,inty)returnx-y;returnx-y;voidmain()voidmain()coutns1:fun(3,4)endl;coutns1:fun(3,4)endl;coutns2:fun(3,4)endl;coutns2:fun(3,4)endl;coutns2:ns3:fun(3,4)endl;coutns2:ns3:fun(3,4)endl;程序运行结果:712-1第2章 C+基础第28页/共33页2.5 2.5 名字空间名字空间2.5.1名字空间的定义与使用2.2.名

32、字空间的使用名字空间的使用名字空间的使用名字空间的使用 (2 2)使用)使用usingusing指令指令格式如下:格式如下:using using 名字空间名名字空间名名字空间名名字空间名;using using 名字空间名名字空间名名字空间名名字空间名:标识符标识符标识符标识符;第一种格式表示在当前范围内,可以直接使用指第一种格式表示在当前范围内,可以直接使用指定名字空间中定义的变量和函数等,而不需要加名字定名字空间中定义的变量和函数等,而不需要加名字空间的限定。空间的限定。第二种格式表示在当前范围内,可以直接使用指第二种格式表示在当前范围内,可以直接使用指定名字空间中指定的变量或函数,而不

33、需要加名字空定名字空间中指定的变量或函数,而不需要加名字空间的限定。间的限定。第2章 C+基础第29页/共33页例2.12 使用using指令#include namespace ns1int fun1(int x,int y);int fun2(int x,int y);int fun3(int x,int y);int fun1(int x,int y)return x+y;int fun2(int x,int y)return x-y;int fun3(int x,int y)return x*y;usingnamespacens1;usingnamespacens1;voidmain(

34、)voidmain()coutfun1(3,4)endl;coutfun1(3,4)endl;coutfun2(3,4)endl;coutfun2(3,4)endl;coutfun3(3,4)endl;coutfun3(3,4)endl;程序运行结果:7-112第2章 C+基础第30页/共33页2.5 2.5 名字空间名字空间2.5.2C+标准库C+C+标准库就被所有的标准库就被所有的C+C+编译器支持,所有标准编译器支持,所有标准C+C+的库都包含在一个单一的名字空间的库都包含在一个单一的名字空间stdstd中。为了使用中。为了使用C+C+的标的标准库,可以使用以下指令:准库,可以使用以下指

35、令:usingnamespacestd;usingnamespacestd;例:使用标准库的程序例:使用标准库的程序#include#includeusingnamespacestd;usingnamespacestd;voidmain()voidmain()cout“cout“本例使用标准库本例使用标准库”endl;endl;注意:由于注意:由于iostreamiostream和都定义了和都定义了coutcout,因此不能同时包,因此不能同时包含这两个文件,否则将产生二义性。含这两个文件,否则将产生二义性。第2章 C+基础第31页/共33页谢 谢!第32页/共33页感谢您的观看!第33页/共33页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

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

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