制作:万斌 例如,假设定义了这样一个指针变量 num pointer,它被分配到4000、4001 单元,其值可通过赋值语句“ num pointer#”得到。此时,指针变量 num pointer的值就是变量num在内存中的起始地址3000,如图所示 29983000300230044000 4002 3 3000 通过指针变量 num pointer存取变量nm值的过程如下: 首先找到指针变量 num pointer的地址(4000),取出其值3000(正好是变量num的 起始地址);然后从3000、3001中取出变量num的值(3)。 (3)两种访问方式的比较 两种访问方式之间的关系,可以用某人甲(系统)要找某人乙(变量)来类比。 一种情况是,甲知道乙在何处,直接去找就是(即直接访问) 另一种情况是,甲不知道乙在哪,但丙(指针变量)知道,此时甲可以这么做:先 找丙,从丙处获得乙的去向,然后再找乙(即间接访问)
制 作:方 斌 例如,假设定义了这样一个指针变量num_pointer,它被分配到4000、4001 单元,其值可通过赋值语句“num_pointer=# ”得到。此时,指针变量 num_pointer的值就是变量num在内存中的起始地址3000,如图所示。 通过指针变量num_pointer存取变量num值的过程如下: 首先找到指针变量num_pointer的地址(4000),取出其值3000(正好是变量num 的 起始地址); 然后从3000、3001中取出变量num的值(3)。 (3)两种访问方式的比较 两种访问方式之间的关系,可以用某人甲(系统)要找某人乙(变量)来类比。 一种情况是,甲知道乙在何处,直接去找就是(即直接访问)。 另一种情况是,甲不知道乙在哪,但丙(指针变量)知道,此时甲可以这么做:先 找丙,从丙处获得乙的去向,然后再找乙(即间接访问)。 3 2998 3000 3002 3004 3000 4000 4002
制作:方斌 再如: 内存用户数据区 整型变量i占2000、2001两个内存单元, 整型变量j占2002、2003两个内存单元, 整型变量k占2004、2005两个内存单元, 2000 2002 369 变量i 它们是整型变量,其内存单元中存放的是普 通整型数据。 变量j 2004 变量k 变量ⅰ pointe占3010、3011两个内存 单元。其中存放的数据是变量地址 3007200变量 ti pointer200—个变量占多个内存单元时,以 首地址表示该变量的地址)。这种存放另 一个变量的地址的变量称为指针变量。 称:变量ⅰ pointer指向变量i,是变量i 指针
制 作:方 斌 再如: 整型变量i占2000、2001两个内存单元, 整型变量j占2002、2003两个内存单元, 整型变量k占2004、2005两个内存单元, 它们是整型变量,其内存单元中存放的是普 通整型数据。 变量i_pointer占3010、3011两个内存 单元。其中存放的数据是变量i的地址 2000(一个变量占多个内存单元时,以 首地址表示该变量的地址)。这种存放另 一个变量的地址的变量称为指针变量。 称:变量i_pointer指向变量i,是变量i的 指针
制作:方斌 4指针与指针变量 (1)指针即地址 个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。 (2)指针变量—专门用于存储其它变量地址的变量 指针变量 num pointer的值就是变量num的地址。指针与指针变量的区 别,就是变量值与变量的区别。 (3)为表示指针变量和它指向的变量之间的关系,用指针运算符“ 表示。 例如,指针变量 num pointer与它所指向的变量nm的关系,表示为 num pointer,即* num pointer等价于变量num 因此,下面两个语句的作用相同 num=3 /*将3直接赋给变量num*/ num pointer=&num,/跸使 num pointer指向num* * num pointer-3;/*将3赋给指针变量 num pointer所指向的变量*
制 作:方 斌 4.指针与指针变量 (1)指针──即地址 一个变量的地址称为该变量的指针。通过变量的指针能够找到该变量。 (2)指针变量──专门用于存储其它变量地址的变量 指针变量num_pointer的值就是变量num的地址。指针与指针变量的区 别,就是变量值与变量的区别。 (3)为表示指针变量和它指向的变量之间的关系,用指针运算符“*” 表示。 例如,指针变量num_pointer与它所指向的变量num的关系,表示为: *num_pointer,即*num_pointer等价于变量num。 因此,下面两个语句的作用相同: num=3; /*将3直接赋给变量num*/ num_pointer=# /*使num_pointer指向num*/ *num_pointer=3; /*将3赋给指针变量num_pointer所指向的变量*/
制作:方斌 10.2变量的指针 一、指针变量的定义 指针变量有三个属性: 内存用户数据区 (1)该指针变量指向的变量的类型。如 i_ pointer指向的变量是整型。 (2)该指针变量在内存中占多少内存单元。2003变量i 如 pointer占两个内存单元,称为“近指20026变量 针”,用near表示。如果该变量在内存中占2004 变量k 4个内存单元,称为“远指针”,用far表示。 如果未指定near或far,缺省是near。(指 针变量在内存中要么占2个内存单元,要么 30107200变量 1 pointer 占4个内存单元)。 (3)该指针变量指向哪一个变量,即该指 针变量的值是多少。如 i pointer的值是 2000
制 作:方 斌 10.2 变量的指针 一、指针变量的定义 指针变量有三个属性: (1)该指针变量指向的变量的类型。如 i_pointer指向的变量i是整型。 (2)该指针变量在内存中占多少内存单元。 如i_pointer占两个内存单元,称为“近指 针”,用near表示。如果该变量在内存中占 4个内存单元,称为“远指针”,用far表示。 如果未指定near或far,缺省是near。(指 针变量在内存中要么占2个内存单元,要么 占4个内存单元)。 (3)该指针变量指向哪一个变量,即该指 针变量的值是多少。如i_pointer的值是 2000
制作:方斌 指针变量定义的一般形式: 类型标识符*标识符 表示定义指针变量 标识符”是指针变量名 “类型标识符”表示该指针变量所指向的变量类型。 例、 int L, j;/*定义两个整型变量* int *pointer_ 1, *pointer- 2i /*定义两个可以指向整型变量的指针*/ float* pointer3;/*定义一个可以指向浮点型变量的指针米 char* pointer4;/*定义一个可以指向字符型变量的指针*/ void* pointer5;/*定义一个可以指向类型变量的指针*/ char far *pointer 6 /*定义一个可以指向字符型变量的远指针占用4个字节*
制 作:方 斌 指针变量定义的一般形式: 类型标识符 * 标识符 “*”表示定义指针变量 “标识符”是指针变量名 “类型标识符”表示该指针变量所指向的变量类型。 例、 int i,j; /* 定义两个整型变量 */ int *pointer_1, *pointer_2; /*定义两个可以指向整型变量的指针 */ float *pointer_3; /*定义一个可以指向浮点型变量的指针*/ char *pointer_4; /*定义一个可以指向字符型变量的指针*/ void *pointer_5; /*定义一个可以指向类型变量的指针*/ char far *pointer_6; /*定义一个可以指向字符型变量的远指针占用4个字节*/