第2章C程序设计教程与实验指导杨国兴C基础.ppt

上传人:sccc 文档编号:5759833 上传时间:2023-08-17 格式:PPT 页数:33 大小:297.04KB
返回 下载 相关 举报
第2章C程序设计教程与实验指导杨国兴C基础.ppt_第1页
第1页 / 共33页
第2章C程序设计教程与实验指导杨国兴C基础.ppt_第2页
第2页 / 共33页
第2章C程序设计教程与实验指导杨国兴C基础.ppt_第3页
第3页 / 共33页
第2章C程序设计教程与实验指导杨国兴C基础.ppt_第4页
第4页 / 共33页
第2章C程序设计教程与实验指导杨国兴C基础.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《第2章C程序设计教程与实验指导杨国兴C基础.ppt》由会员分享,可在线阅读,更多相关《第2章C程序设计教程与实验指导杨国兴C基础.ppt(33页珍藏版)》请在三一办公上搜索。

1、C+语言程序设计,杨国兴 张东玲 彭涛,中国水利水电出版社,第2章 C+基础,2.1 常量与变量2.2 指针与引用2.3 动态内存分配2.4 位运算符2.5 名字空间,2.1 常量与变量,2.1.1 常量 常量:在程序运行中,其值不能被改变的量称为常量。常量又分为直接常量和符号常量两种。1.直接常量:直接使用数值或文字表示的值(1)整型常量 如:10、-20、0 还可以八进制或十六进制表示:如034、0 x23 不带后缀的整型常量为 int 型,带后缀 L 或 l 可表示长整型常量,带后缀 U 或 u 表示无符号整型常量(2)实型常量 如:2.18、-5.6、2.3E+2、-3.12E-2不带

2、后缀的实型常量为 double 型,带后缀 F 或 f 可表示单精度实型常量,第2章 C+基础,2.1 常量与变量,2.1.1 常量(续一)(3)字符型常量 以单引号括起来的单个字符:如a、3、*转义字符:键盘不便于直接输入的字符,如回车符、制表符等,通常以“”开头表2.3 转义字符,第2章 C+基础,2.1 常量与变量,2.1.1 常量(续二)(4)bool型常量 bool常量只有两个:true(真)、false(假)在内存中占有一个字节的存储空间(5)字符串常量 由一对双引号括起来的若干字符,如“abc”字符串常量的末尾自动加入结束标志 0,因此字符串在内存中占有的字节数为 字符个数+1

3、若字符串中包含特殊字符,如、回车、制表符等,也应以他们对应的转义字符形式表示,第2章 C+基础,例2.1 检测基本数据类型所占的字节数,#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:sizeof(char)endl;cou

4、t bool:sizeof(bool)endl;,第2章 C+基础,2.1 常量与变量,2.1.1 常量(续三)2.符号常量:直接使用符号表示的常量值,包括宏定义和const定义的符号常量。(1)宏定义 语法形式:#define 宏名 字符串 如:#define PI 3.14 程序编译前会自动用字符串取代程序中出现的宏名(2)const定义 语法形式:const 类型说明符 常量名=常量值;如:const float pi=3.14;宏定义在预编译时,只进行简单的替换,不做语法检查 宏定义没有数据类型,而const定义的符号常量是有数据类型的。,第2章 C+基础,例2.2 使用符号常量,#i

5、nclude void main()#define PI 3.14 const int A=10;cout PI*10*10 n;cout A+20 n;,第2章 C+基础,2.1 常量与变量,2.1.2 变量 1.变量的定义:程序运行中值可以被改变的量。变量必须先定义再使用。变量定义的一般形式 语法形式:数据类型 变量名1,变量名2,变量名n;如:int a,b,c;2.变量的初始化 含义:定义变量的同时为其赋初值 两种形式:用赋值号(“=”)或用括号 如:float a=3.14;或 float a(3.14);,第2章 C+基础,例2.3 从键盘输入n的值,计算从1到n的累加和。,#in

6、clude void main()int n,sum=0;cin n;int i;for(i=1;i=n;i+)sum+=i;cout sum n;,第2章 C+基础,2.2 指针与引用,2.2.1 指针 1.地址与指针的概念(1)内存地址 计算机的内存储器被划分成一个个的存储单元,这些存储单元按一定的规则编号,这个编号就是存储单元的地址。每个存储单元的大小为一个字节,每个单元有一个唯一的地址。(2)变量的地址 在程序中定义的所有变量,都要分配相应的存储单元,不同类型的数据所需要的存储空间的大小不同。系统分配给变量的内存空间的起始单元地址称为该变量的地址。如:int a;则0 x3000为变量

7、a的地址,第2章 C+基础,2.2 指针与引用,2.2.1 指针 2.指针与指针变量(1)指针:一个变量的地址也称为该变量的指针。(2)指针变量:用于存储其它变量的指针(即地址)的变量。指针变量的定义:数据类型*指针变量名;如:int*p1;float*p2;char*p3;注意:指针变量所指向的变量类型不能改变 指针变量必须指向具体内存地址才能引用,如:int*p;*p=10;(3)指针运算符(*)与取地址运算符(&),第2章 C+基础,例2.4 通过指针变量存取变量的值,#include void main()int a,*p1;double b,*p2;char c,*p3;p1=,程序

8、运行结果为:1011.2A,第2章 C+基础,例2.5 输入a和b两个数,按从小到大的顺序输出,#include void main()int a,b;int*p1,*p2,*p;cout a b;p1=,程序运行结果为:请输入两个整数:30 10min=10 max=30,第2章 C+基础,2.2 指针与引用,2.2.1 指针3.指针作为函数的参数 指针作为函数的参数,实际上传递的是变量的地址,进行的是地址传递。例2.6 指针作为函数参数,被调函数中交换参数值,#include void swap(int*x,int*y);void main()int a,b;a=10;b=20;swap(

9、,void swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=temp;,第2章 C+基础,2.2 指针与引用,例2.6 程序运行过程中变量值的变化分析,(a),(b),(c),(d),程序运行结果为:20,10,第2章 C+基础,2.2 指针与引用,2.2.2 引用1.引用的概念 引用是一种特殊的变量,可以认为是一个变量的别名。定义引用的一般格式:类型说明符 首先定义变量a,并初始化为1,然后定义引用b,并初始化为a,即b是a的别名,因此a和b是同一个单元。注意:定义引用时一定要初始化,指明该引用变量是谁的别名。,第2章 C+基础,例2.7 引用的使用,#

10、include void main()int a=1;int c=10;int,程序运行结果:1,1,1010,10,1020,20,10,定义引用b,并将其作为a的别名,将c的值赋给b,不是将b作为c的别名,第2章 C+基础,2.2 指针与引用,2.2.2 引用(续一)2.引用作为函数的参数 例2.8 写一个函数,用引用作为参数,交换函数中两个变量的值。,#include void swap(int x,int y);void main()int a,b;a=10;b=20;swap(a,b);cout a,b endl;,void swap(int,程序运行结果为:20,10,第2章 C+

11、基础,2.2 指针与引用,2.2.2 引用(续二)例2.8程序运行过程中参数值的变化图示,注意:引用作参数时,函数的实参与形参在内存中共用存储单元,因此形参的变化会使实参同时变化。,第2章 C+基础,2.3 动态内存分配,在程序运行过程中根据需要动态分配存储空间,不需要时还可以将空间释放,通过new和delete运算符实现。1.动态分配一个数据的存储空间 通过new运算符实现动态分配内存,格式如下:new 类型名(初值)如:int*p1,*p2;p1=new int(10);p2=new int;运算符delete用来释放由运算符new动态分配的存储空间。使用格式如下:delete 指针名;如

12、:delete p1;,第2章 C+基础,2.3 动态内存分配,2.动态分配多个连续的数据存储空间 通过new运算符动态分配数组,格式如下:new 类型名整型表达式 如:int*p1;p1=new int10;用delete删除动态数组时,要在指针前加“”。格式如下:delete 指针名;如:delete p1;,第2章 C+基础,例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+)

13、cout*(p2+i);cout endl;for(i=0;i10;i+)cout p2i“”;/p2i 与*(p2+i)所访问的数据相同cout endl;delete p1;delete p2;,程序运行结果为:100 1 2 3 4 5 6 7 8 90 1 2 3 4 5 6 7 8 9,第2章 C+基础,2.4 位运算符,2.4.1 位运算符 C+使用位运算符可以对数据按二进制位进行操作。1.按位与(&):将两个操作数对应的每一位分别进行逻辑与 如:9&7 9:00001001 7:00000111 9&7:00000001 9&7结果为1 2.按位或(|):将两个操作数对应的每一位

14、分别进行逻辑或 3.按位异或():将两个操作数对应的每一位分别进行异或,第2章 C+基础,2.4 位运算符,2.4.1 位运算符(续)4.按位取反():单目运算符,对二进制的每一位取反 5.左移位():使运算符左侧操作数的各位右移指定位数,溢出的低位舍弃,对无符号数和有符号中的正数,高位补0,对于有符号数中的负数,有些系统补0(称为逻辑右移),有些系统补1(称为算术右移)。如 72的结果是1。,7,72,第2章 C+基础,2.4 位运算符,2.4.2 位运算符应用举例 例2.10 输入变量a,b的值,并将变量a的低4位置为0,将变量b的低4位置为1。#include void main()in

15、t a,b;cin a;cin b;a=a,0 xf为十六进制数,它的后四位为1,其他位均为0。取反后后四位为0,其他位均为1。,若输入25和23,程序执行结果为:1631,第2章 C+基础,2.5 名字空间,2.5.1 名字空间的定义与使用 1.名字空间的定义 namespace 名字空间名 例:namespace NameSpace1 int a;int f1()float f2(),(1)名字空间只能在全局范围那定义,但名字空间是可以嵌套的。(2)一个名字空间可以用另一个名字作为它的别名。例如使用ns1作为上述名字空间NameSpace1的别名,可以用下面的语法:namespace ns

16、1=NameSpace1;,第2章 C+基础,2.5 名字空间,2.5.1 名字空间的定义与使用2.名字空间的使用(1)使用域运算符格式如下:名字空间名:标识符 例如下面一行程序,可以访问名字空间NameSpace1中的变量a和函数f1()。NameSpace1:a=NameSpace1:f1();,第2章 C+基础,例2.11 名字空间的定义与使用,#include namespace ns1 int fun(int x,int y);namespace ns2 int fun(int x,int y);namespace ns3 int fun(int x,int y);int ns1:f

17、un(int x,int y)return x+y;,int ns2:fun(int x,int y)return x*y;int ns2:ns3:fun(int x,int y)return x-y;void main()cout ns1:fun(3,4)endl;cout ns2:fun(3,4)endl;cout ns2:ns3:fun(3,4)endl;,程序运行结果:7 12-1,第2章 C+基础,2.5 名字空间,2.5.1 名字空间的定义与使用2.名字空间的使用(2)使用using指令格式如下:using 名字空间名;using 名字空间名:标识符;第一种格式表示在当前范围内,可

18、以直接使用指定名字空间中定义的变量和函数等,而不需要加名字空间的限定。第二种格式表示在当前范围内,可以直接使用指定名字空间中指定的变量或函数,而不需要加名字空间的限定。,第2章 C+基础,例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;,using

19、 namespace ns1;void main()cout fun1(3,4)endl;cout fun2(3,4)endl;cout fun3(3,4)endl;,程序运行结果:7-1 12,第2章 C+基础,2.5 名字空间,2.5.2 C+标准库 C+标准库就被所有的C+编译器支持,所有标准C+的库都包含在一个单一的名字空间std中。为了使用C+的标准库,可以使用以下指令:using namespace std;例:使用标准库的程序#include using namespace std;void main()cout“本例使用标准库”endl;注意:由于iostream和iostream.h都定义了cout,因此不能同时包含这两个文件,否则将产生二义性。,第2章 C+基础,谢 谢!,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号