C++程序设计 湖南大学 杜四春、银红霞 经过上面部分的学习已知,在C++语言中有两个 有关指针的特别运算符: &运算符:为取地址运算符,&x的值为×的地址 *运算符:指针运算符,或指向运算符,也称间接 运算符,和代表p所指向的变量。 在指针变量的定义和指针变量的引用中都有*p 但引用指针时的*p与定义指针变量时用的*p是有区别 的,它们形式上有些相似,而含义是不同的
C++程序设计 湖南大学 杜四春、银红霞 经过上面部分的学习已知,在C++语言中有两个 有关指针的特别运算符: ◼ & 运算符:为取地址运算符,&x的值为x的地址。 ◼ * 运算符:指针运算符,或指向运算符,也称间接 运算符, *p代表p所指向的变量。 在指针变量的定义和指针变量的引用中都有*p。 但引用指针时的*p与定义指针变量时用的*p是有区别 的,它们形式上有些相似,而含义是不同的
C++程序设计 湖南大学 杜四春、银红霞 由于引进了指针的概念,读者在程序中要注意区 分下面三种表示方法所具有的不同意义。例如,有 个指针px, pX 指针变量,它的内容是地址量。 pⅩ--指针的目标变量,它的内容是数据 &p×--指针变量占用的存储区域的地址 px px &px 图64*pX和&px的意义
C++程序设计 湖南大学 杜四春、银红霞 由于引进了指针的概念,读者在程序中要注意区 分下面三种表示方法所具有的不同意义。例如,有一 个指针px , ◼ px ----- 指针变量,它的内容是地址量。 ◼ *px --- 指针的目标变量,它的内容是数据。 ◼ &px -- 指针变量占用的存储区域的地址。 px &px *px 图6-4 *px和&px的意义
C++程序设计 湖南大学 杜四春、银红霞 623指针的灵活性 上面讲述过,多个指针可以指向一个变量。由这 种思想可以得知:利用指针的灵活性,既可交换指向, 也可以交换指针所指向的变量的值。为了更好地了解 指针的概念,下面通过一些例子来使读者消化掌握有 关指针的使用。 例6-2:多个指针指向同一个变量 例6-3:交换指针所指向的变量 例6-4:交换指针所指向的变量的值 交换地址(即交换指向)和交换所指向的变量的 值有本质的区别
C++程序设计 湖南大学 杜四春、银红霞 6.2.3 指针的灵活性 上面讲述过,多个指针可以指向一个变量。由这 种思想可以得知:利用指针的灵活性,既可交换指向, 也可以交换指针所指向的变量的值。为了更好地了解 指针的概念,下面通过一些例子来使读者消化掌握有 关指针的使用。 例6-2:多个指针指向同一个变量。 例6-3:交换指针所指向的变量。 例6-4:交换指针所指向的变量的值。 交换地址(即交换指向)和交换所指向的变量的 值有本质的区别
C++程序设计 湖南大学 杜四春、银红霞 624二级指针 由于指针是一个变量,在内存中也占据一定的空 间,具有一个地址,这个地址也可以利用指针来保存 因此,可以声明一个指针来指向它,这个指针称为指 向指针的指针,也即二级指针。声明二级指针的形式 如下: 存储类型数据类型**指针变量名 其中的两个星号“**”表示二级指针;数据类型 是指通过两次间接寻址后所访问的变量的类型。 例如: Int l大p=&i; int大大pp=&p 上述语句声明了一个二级指针pp,它指向指针p
C++程序设计 湖南大学 杜四春、银红霞 6.2.4 二级指针 由于指针是一个变量,在内存中也占据一定的空 间,具有一个地址,这个地址也可以利用指针来保存。 因此,可以声明一个指针来指向它,这个指针称为指 向指针的指针,也即二级指针。声明二级指针的形式 如下: 存储类型 数据类型 **指针变量名 其中的两个星号“**”表示二级指针;数据类型 是指通过两次间接寻址后所访问的变量的类型。 例如: int i,*p=&i; int **pp=&p; 上述语句声明了一个二级指针pp,它指向指针p
C++程序设计 湖南大学 杜四春、银红霞 #include<iostream. h> 此程序的运行结果为: void main o a int ai int大p=&ar大pp=&p p=0x0065FDFD pp=0x0065FDED COut<<”a=<<a<<endl; 大大 cut<<”*p=<<*p<<end1; pp=1 cout<< p=<<p<<endli cout<< * pp=<<*pp<<endli cout<<”大pPp=”<<*大pp<<end1;
C++程序设计 湖南大学 杜四春、银红霞 #include<iostream.h> void main() { int a; int *p=&a,**pp=&p; a=1; cout<<”a=”<<a<<endl; cout<<”*p=”<<*p<<endl; cout<<”p=”<<p<<endl; cout<<”*pp=”<<*pp<<endl; cout<<”**pp=”<<**pp<<endl; } 此程序的运行结果为: a=1 *p=1 p=0x0065FDFD *pp=0x0065FDFD **pp=1