(2)接访问—通过另一变量访问该变量的值 C++语言规定:在程序中可以定义一种特殊的变 量(称为指针变量),用来存放其它变量的地址。 如:假设定义了这样一个指针变量 num_ pointer, 它被分配到4000、4001单元,其值可通过赋值语句: num pointer=& num 得到。此时,指针变量 num _ pointer的值就是变量 num在内存中的起始地址300 通过指针变量 num_ pointer存取变量num值的过程 如下: 首先找到指针变量 num pointer的地址(4000), 取出其值3000(正好是变量num的起始地址);然 后从3000、3001中取出变量num的值(3)。 2021/2/24 6
2021/2/24 6 如:假设定义了这样一个指针变量num_pointer, 它被分配到4000、4001单元,其值可通过赋值语句: num_pointer=# 得到。此时,指针变量num_pointer的值就是变量 num在内存中的起始地址3000。 通过指针变量num_pointer存取变量num值的过程 如下: 首先找到指针变量num_pointer的地址(4000), 取出其值3000(正好是变量num 的起始地址); 然 后从3000、3001中取出变量num的值(3)。 (2)间接访问──通过另一变量访问该变量的值 C++语言规定:在程序中可以定义一种特殊的变 量(称为指针变量),用来存放其它变量的地址
num pointer 3000 3001 (3)两种访问方式的比较 两种访问方式之间的关系,可以用某人甲(系统) 要找某人乙(变量)来类比。 种情况是,甲知道乙在何处,直接去找就是(即 直接访问)。 另一种情况是,甲不知道乙在哪,但丙(指针变量) 知道,此时甲可以这么做:先找丙,从丙处获得乙的 去向,然后再找乙(即间接访问)。 2021/2/24
2021/2/24 7 (3)两种访问方式的比较 两种访问方式之间的关系,可以用某人甲(系统) 要找某人乙(变量)来类比。 一种情况是,甲知道乙在何处,直接去找就是(即 直接访问)。 另一种情况是,甲不知道乙在哪,但丙(指针变量) 知道,此时甲可以这么做:先找丙,从丙处获得乙的 去向,然后再找乙(即间接访问)。 num_pointer 3000 3 3001 … …
4指针与指针变量 (1)指针—即地址 一个变量的地址称为该变量的指针。通过变量的 指针能够找到该变量。 (2)指针变量—专门用于存储其它变量地址的变 量 指针变量 num pointer的值就是变量num的地址 指针与指针变量的区别,就是变量值与变量的区别 (3)为表示指针变量和它指向的变量之间的关系, 用指针运算符“*”表示。 2021/224 8
2021/2/24 8 4.指针与指针变量 (1)指针──即地址。 一个变量的地址称为该变量的指针。通过变量的 指针能够找到该变量。 (2)指针变量──专门用于存储其它变量地址的变 量。 指针变量num_pointer的值就是变量num的地址。 指针与指针变量的区别,就是变量值与变量的区别。 (3)为表示指针变量和它指向的变量之间的关系, 用指针运算符“*”表示
如:指针变量 num pointer与它所指向的变量 num的关系,表示为: num pointer,即* num pointer等价于变量num 2021/224 9
2021/2/24 9 如:指针变量num_pointer与它所指向的变量 num的关系,表示为: *num_pointer,即*num_pointer等价于变量num
因此,下面两个语句的作用相同: num; 将3直接赋给变量num num pointer=#∥使 num pointer指向mum/ num_ pointer=3;/将3赋给指针变量 num_ pointer 所指向的变量 num pointer 3000 3001 3002 3003 2021/224 10
2021/2/24 10 num_pointer 3000 3001 3002 3003 3 … … 因此,下面两个语句的作用相同: num=3; //将3直接赋给变量num num_pointer=# //使num_pointer指向num/ *num_pointer=3; //将3赋给指针变量num_pointer/ //所指向的变量