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