第十章
第十章
5101地址利指街的概念 为了说清楚什么是指针,必须弄清楚数效据在内 存中是如问存储的,又是如何读取的。 内存区的每一个字节有一个编号,这就是“地 址”。如果在程序中定义了一个变量,在对 程序进行编译时或程序运行时,系统就会给这 个变量分配內存单元
§10.1地址和指针的概念 为了说清楚什么是指针,必须弄清楚数据在内 存中是如何存储的,又是如何读取的。 内存区的每一个字节有一个编号,这就是“地 址” 。如果在程序中定义了一个变量,在对 程序进行编译时或程序运行时,系统就会给这 个变量分配内存单元
变量的两个物理意义 2000 001 变量的内容 loat x, 2002 2003 2004 变量的地址 2005
main() {float x; int y; … } 变量的两个物理意义 2000 2001 2002 2003 2004 2005 … x y 变量的内容 变量的地址
利用变量名 InaRi 存取数据的方式 [int a,b, ci 称为“直接存取 52000 ”方式。 E2001 b=3 直接将整数存八型a 32002 2003 c=t甲直接将整数3存入变量b 82004 接将变量a、b的值 2005 取出,相加后存入变量c
main() {int a,b,c; a=5; b=3; c=a +b; … } 2000 2001 2002 2003 2004 2005 abc 5 直接将整数 5 存入变量 a 3 直接将整数 3 存入变量 b 8 直接将变量 a 、 b 的值 取出,相加后存入变量 c 利用变量名 存取数据的方式 称为“直接存取 ”方式
另种取变量值的方式称为“间接访间 的方式。即将变量L的地址存放在另一个 变量中。 在C语言中,指针是一种特殊的变量,它是 存放地址的
另一种存取变量值的方式称为“间接访问” 的方式。即将变量i的地址存放在另一个 变量中。 在C语言中,指针是一种特殊的变量,它是 存放地址的
假设我们定义了一个指针变量 i pointer用来存放整型变量的地址, 它被分配地址为(3010)、(3011的两 个字节。可以通过语句: i pointer=& i s 2000 将i的地址(2000到 pointer中。 这时, i pointer值就是2000即 pointer 变量i所占用单元的起始地址。要存 取变量i的值,可以采用间接方式:200 先找到存放“i的地址”的变量 pointer,从中取出i的地址(200) 2000 然后到2000、2001字节取出i的值 (3)
假设我们定义了一个指针变量 i_pointer用来存放整型变量的地址, 它被分配地址为(3010)、(3011)的两 个字节。可以通过语句: i_pointer =&i; 将i的地址(2000)存放到i_pointer中。 这时, i_pointer的值就是(2000) ,即 变量i所占用单元的起始地址。要存 取变量i的值,可以采用间接方式: 先找到存放“i的地址”的变量 i_pointer ,从中取出i的地址(2000), 然后到2000 、 2001字节取出i的值 (3)
指针和指针变量的定义: 个变量的地址称为该变量的“指针 例如,地址2000是变量i的指针。如果有一个变量 专门用来存放另一变量的地址(即指针),则它称 为“指针变量”。上述的 pointer就是一个指针变 指针变量的值(即指针变量中存放的值)是地址 (即指针)。请区分“指针”和“指针变量”这 两个概念
一个变量的地址称为该变量的“指针”。 例如,地址2000是变量i的指针。如果有一个变量 专门用来存放另一变量的地址(即指针),则它称 为“指针变量”。上述的i_pointer就是一个指针变 量。 指针和指针变量的定义: 指针变量的值(即指针变量中存放的值)是地址 (即指针)。请区分“指针”和“指针变量”这 两个概念
9102变量的指针和指向变量的指量 指针变量用来指向另一个变量 pointer来1 pointer 为了表示指针变量和它所指向的 变量之间的联系,在程序中用 2000 ”符号表示“指向”,例如: _ pointer代表指针变量,而 2000 pointer是 pointer所指向的 变量,即 pointer也代表一个 变量,它和变量是同一回事。 1)i=3 2)*1 pointer=3; 这两个语句作用相同。 1021定义一个指针变量 定义指针变量的一般形式为 基类型啪针变量名
§10.2 变量的指针和指向变量的指针变量 10.2.1 定义一个指针变量 定义指针变量的一般形式为 基类型 *指针变量名; 指针变量用来指向另一个变量, 为了表示指针变量和它所指向的 变量之间的联系,在程序中用 “*”符号表示“指向”,例如: i_pointer代表指针变量,而 *i_pointer是i_pointer所指向的 变量,即*i_pointer也代表一个 变量,它和变量i是同一回事。 1)i=3; 2)*i_pointer=3; 这两个语句作用相同
不面部是育的y float *pointer_3;∥ pointer_3是指向oa变 量的指针变量 char pointer4; pointer.4是指向字符型变量的 指针变量 pointer 1 可以用赋值语句使一个 指针变量得到另一个变 量的地址,从而使它指 向一个该变量。如: pointer pointer 1=&i; pointer 2&
下面都是合法的定义: float *pointer_3; // pointer_3是指向float型变 量的指针变量 char *pointer_4; //pointer_4是指向字符型变量的 指针变量 可以用赋值语句使一个 指针变量得到另一个变 量的地址,从而使它指 向一个该变量。如: pointer_1=&i; pointer_2=&j;
2000 E2001 指针变量定义的形式指针变量初始化 2002 void main( maino 2000 2003 dint a, *p I int a, p=&a 2004 float x, q float x,*q=&x; 2005 p && a 2006 2007 2008 2004 2009
main() { int a,*p=&a ; float x,*q=&x ; …} 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 apxq 2004 void main() 2000 {int a,*p; float x,*q; p = &a ; q = &x ; …} 指针变量定义的形式 指针变量初始化