A的外的出》净的出《的要的《图的《的气
教学内容: 81指针的概念及其运算 82void指针和 const指针 8.3指针与数组 84指针与字符串 85指针与函数 86动态内存分配 8.7引用 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 2 教学内容: 8.1 指针的概念及其运算 8.2 void指针和const指针 8.3 指针与数组 8.4 指针与字符串 8.5 指针与函数 8.6 动态内存分配 8.7 引用
教学目的: 熟练掌握指针的概念、定义、初始化及指针运算 团掌握指针与数组、函数、字符串等的联系; 区掌握动态空间操作; 区掌握引用的定义格式及其使用规则 C++程序设计课件设计制作:徐龙琴 3
C++程序设计课件 设计制作:徐龙琴 3 熟练掌握指针的概念、定义、初始化及指针运算 掌握指针与数组、函数、字符串等的联系; 掌握动态空间操作; 掌握引用的定义格式及其使用规则 教学目的:
§81指针的概念及其运算 若定义了一个变量,编译系统就会根据定义中变 量的类型,为其分配一定字节数的内存空间(如:字 符型占1字节、整型占2字节、实型占4字节、双精度 型占8字节.… v ] int a=1, b=2: float x=3.5 a b 10121013101510161201120212031204 每个变量的地址是指该变量所占存储单元的第一个字节的 地址。在此称的a地址为:1012;b为1015;x为1201 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 4 §⒏1指针的概念及其运算 若定义了一个变量,编译系统就会根据定义中变 量的类型,为其分配一定字节数的内存空间(如:字 符型占1字节、整型占2字节、实型占4字节、双精度 型占8字节……)。 例:int a=1, b=2; float x=3.5; 每个变量的地址是指该变量所占存储单元的第一个字节的 地址。在此称的a地址为:1012;b为1015;x为1201 a 1012 1013 b 1015 1016 x 1201 1202 1203 1204
例如:语句prn(9%d,a+b)的执行是这样的: ①依变量名与地址的对应关系(此对应关系是 在编译是确定的)找到变量a的地址1012和变 量b的地址1015 ②从1012开始的两个字节中取出a的值(1);再 从1015开始的两个字节中取出b的值(2) ③将a的值(1)与b的值(2)相加后,按“%d”格式 输出 总之:变量和变量内存地址有一一对应关 系,变量的地址我们又称变量的指针。 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 5 例如:语句 printf(“%d”, a+b); 的执行是这样的: ① 依变量名与地址的对应关系(此对应关系是 在编译是确定的)找到变量a的地址1012和变 量b的地址1015 ② 从1012开始的两个字节中取出a的值(1);再 从1015开始的两个字节中取出b的值(2) ③ 将a的值(1)与b的值(2)相加后,按“%d”格式 输出 总之:变量和变量内存地址有一一对应关 系,变量的地址我们又称变量的指针
1 指针概念 指针是一个地址,是一个地址常量,若我们要存 放该地址常量的值,可用定义一个变量来存放。 指针变量是一个变量,它和普通变量一样占用一 定的存储空间。但与普通变量不同之处在于,指针变 量的存储空间存的不是普同数据,而是一个地址,因 此指针变量是一个地址变量。 a p1012 2002 10121013 变量p指向了变量a C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 6 指针变量是一个变量,它和普通变量一样占用一 定的存储空间。但与普通变量不同之处在于,指针变 量的存储空间存的不是普同数据,而是一个地址,因 此指针变量是一个地址变量。 指针是一个地址,是一个地址常量,若我们要存 放该地址常量的值,可用定义一个变量来存放。 a 1012 1013 p 1012 2002 变量p指向了变量a ⒈指针概念
◇变量的指针和指向变量的指针变量 ◆变量的指针:即变量的地址 ◆指针变量:存放变量地址的变量是指针变量,用 来指向另一个变量。 ◆指针变量和它所指向的变量之间的关系的表示: ■在程序中用“*”号表示“指向“,如:p代表指 针变量,而*是p所指向的变量,见下图 p *p &P1012 a 2002 1012 可以看到*p也代表一个变量,它和变量a是同一 回事。因此语句a=1;和*p=1;的作用相同 C++程序设计课件设计制作:徐龙琴 7
C++程序设计课件 设计制作:徐龙琴 7 ◆ 指针变量和它所指向的变量之间的关系的表示: ■在程序中用“*”号表示“指向“,如:p代表指 针变量,而*p是p所指向的变量,见下图 1012 p 2002 a 1012 1 *p ■ 可以看到*p也代表一个变量,它和变量a是同一 回事。因此语句 a=1;和 *p=1;的作用相同 &P ◇变量的指针和指向变量的指针变量 ◆变量的指针:即变量的地址 ◆指针变量:存放变量地址的变量是指针变量,用 来指向另一个变量
2指针变量定义格式: 数据类型*指针变量名; ◆数据类型:指该指针变量所指的变量的类型。 ◆大:是一个说明符,用来说明该变量是指针变量 ◆指针变量名:是用户自定义的任意合法的标识符。 例:f1oat*p1,*p2;(p1和p2是指向实型变量的指针变量) char *kp (p是指向字符型变量的指针变量) C++程序设计课件设计制作:徐龙琴 8
C++程序设计课件 设计制作:徐龙琴 8 ⒉指针变量定义格式: 数据类型 *指针变量名; float *p1, *p2; (p1和p2是指向实型变量的指针变量) char *p; (p是指向字符型变量的指针变量) 例: ◆ 数据类型:指该指针变量所指的变量的类型。 ◆ *:是一个说明符,用来说明该变量是指针变量 ◆ 指针变量名:是用户自定义的任意合法的标识符
3指针初始化格式: 数据类型*指针名=初始地址; 例: float x;等价: float*p,x; float *kp=&x p=&x;//p只能指向fat型变量 注意:①所有指针变量在使用之前都要有确定的指向,如果暂时不知 道给指针变量赋什么值,就赋NULL(它是 iostream. h头文件 中的预定义符),值为“NULL”的指针称为空指针。 ②指针变量占4个存储单元,不能将一个整型数据赋给指针变量 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 9 ⒊指针初始化格式: 数据类型 *指针名=初始地址; 注意: ①所有指针变量在使用之前都要有确定的指向,如果暂时不知 道给指针变量赋什么值,就赋NULL(它是iostream.h头文件 中的预定义符),值为“NULL”的指针称为空指针。 ②指针变量占4个存储单元,不能将一个整型数据赋给指针变量 例: float x; float *p=&x; 等价:float *p,x; p=&x;//p只能指向float型变量
注意: &:它是取地址运算符,即取&运算符右侧的对象的地址 具*:它是指针运算符,它有两个含义: 在定义时*指后面的变量是指针变量:char*cp; ■除定义之外*指取指针所指向的变量的值 如: char *cp=&a;∥cp指a的值 cp=2 将2的值赋给a 例:若int*p,a=1;则下列语句的含义是: p=&a;将a的地址赋给p a=米p; 将p所指向的值赋给a p=&(*p) /将p所指向的值的地址赋给p a=米(&a) 将a的值赋给a C++程序设计课件设计制作:徐龙琴 10
C++程序设计课件 设计制作:徐龙琴 10 注意: &:它是取地址运算符,即取&运算符右侧的对象的地址 * :它是指针运算符,它有两个含义: 在定义时* 指后面的变量是指针变量:char *cp; 除定义之外* 指取指针所指向的变量的值。 如:char *cp=&a; //*cp指a的值 *cp=2; //将2的值赋给a 例:若int *p,a=1; 则下列语句的含义是: p=&a; a= *p; p = &(*p); a = *(&a); // 将a的地址赋给p //将p所指向的值赋给a //将p所指向的值的地址赋给p //将a的值赋给a