c程序设计教程与实验指导杨国兴c基础

上传人:xiao****1972 文档编号:72943297 上传时间:2019-01-24 格式:PPT 页数:33 大小:492.31KB
返回 下载 相关 举报
c程序设计教程与实验指导杨国兴c基础_第1页
第1页 / 共33页
c程序设计教程与实验指导杨国兴c基础_第2页
第2页 / 共33页
c程序设计教程与实验指导杨国兴c基础_第3页
第3页 / 共33页
c程序设计教程与实验指导杨国兴c基础_第4页
第4页 / 共33页
c程序设计教程与实验指导杨国兴c基础_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《c程序设计教程与实验指导杨国兴c基础》由会员分享,可在线阅读,更多相关《c程序设计教程与实验指导杨国兴c基础(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、0x23 不带后缀的整型常量为 int 型,带后缀 L 或 l 可表示长整型常量,带后缀 U 或 u 表示无符号整型常量 (2)实型常量 如:2.18、-5.6、2.3E+2、-3.

2、12E-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,因此字符串在

3、内存中占有的字节数为 字符个数+1 若字符串中包含特殊字符,如 、回车、制表符等,也应以他们对应的转义字符形式表示,第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: “

4、sizeof(long double) endl; cout “char: “ sizeof(char) endl; cout “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 ; 宏

5、定义在预编译时,只进行简单的替换,不做语法检查 宏定义没有数据类型,而const定义的符号常量是有数据类型的。,第2章 C+基础,例2.2 使用符号常量,#include 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. 变量的初始化 含义:定义变量的

6、同时为其赋初值 两种形式:用赋值号(“=”) 或用括号 如: float a = 3.14 ; 或 float a(3.14);,第2章 C+基础,例2.3 从键盘输入n的值,计算从1到n的累加和。,#include 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)内存地址 计算机的内存储器被划分成一个个的存储单元,这些存储单元按一定的规则编号,这个编号就是存储单元的地址。 每个存储单元的大小为一个字节

7、,每个单元有一个唯一的地址。 (2)变量的地址 在程序中定义的所有变量,都要分配相应的存储单元,不同类型的数据所需要的存储空间的大小不同。 系统分配给变量的内存空间的起始单元地址称为该变量的地址。 如: int a; 则0x3000为变量a的地址,第2章 C+基础,2.2 指针与引用,2.2.1 指针 2. 指针与指针变量 (1)指针:一个变量的地址也称为该变量的指针。 (2)指针变量:用于存储其它变量的指针(即地址)的变量。 指针变量的定义: 数据类型 *指针变量名; 如: int *p1; float *p2; char *p3; 注意:指针变量所指向的变量类型不能改变 指针变量必须指向具

8、体内存地址才能引用,如: int *p; *p=10; (3)指针运算符(*)与取地址运算符(&),第2章 C+基础,例2.4 通过指针变量存取变量的值,#include void main() int a, *p1; double b, *p2; char c, *p3; p1 = ,程序运行结果为: 10 11.2 A,第2章 C+基础,例2.5 输入a和b两个数,按从小到大的顺序输出,#include void main() int a, b; int *p1, *p2, *p; cout a b; p1 = ,程序运行结果为: 请输入两个整数:30 10 min = 10 max =

9、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( ,void swap(int *x, int *y) int temp; temp = *x; *x = *y; *y = temp; ,第2章 C+基础,2.2 指针与引用,例2.6 程序运行过程中变量值的变化分析,(a),(b),(

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

11、给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+基础,2.2 指针与引用,2.2.2 引用(续二) 例2.8程序运行过程中参数值的变化图示,注意:引用作参数时,函数的实参与形参在内存中

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

13、通过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+) cout *(p2+i) “ “;

14、cout endl; for(i=0; i10; i+) cout p2i “ ”; / p2i 与 *(p2+i)所访问的数据相同 cout endl; delete p1; delete p2; ,程序运行结果为: 10 0 1 2 3 4 5 6 7 8 9 0 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. 按位或(|) :将

15、两个操作数对应的每一位分别进行逻辑或 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() int a,b; cin a; cin b; a = a ,0xf为十六进制数,它的后四位为1,其他位均为0。取反后后四位为0,其他位均为1。,若输入25和23,程序执行结果为: 16 31,第2章 C+基础,2.5 名字空间,2.5.1 名字空间的定义与使用 1.名字空间的定义 namespace 名字空间名 例 : namespace NameSpace1 int a; int f1() float f2() ,(1)名字空间只能在全局范围那定义,但名字空间是可以嵌套的。 (2)一个名字空间可以用另一个名

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号