文档介绍:本次课内容:指针概念教学目的:掌握指针的相关概念、地址、指针、基类型;指针变量的定义,引用。重点:相关概念、定义、引用。难点:指针的指向、存储单元地址与存储单元内容、存储单元地址的存储。
一、地址与指针1、地址与取地址运算 地址: 存储区域(内存)中第一个字节的编号。 计算机内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就称为内存地址。 内存中的存储空间是连续的,内存中的地址号也是连续的,并用二进制数来表示(为方便描述,我们采用十进制表示地址) 。 在程序中定义了一个变量,C就会在内存为其分配一定字节的内存空间。注:如:int a,b;float x; a=3,b=4; x=;此时,a分配的单元为两个字节,第一个字节的编号是1010,故a 的地址为1010。 同理,变量b的地址为1012,变量x的地址为1216。变量的地址用&运算符进行运算。如:&a 的结果为:1010。 地址1010中的内容是3。
1010
1012
1014
1216
1218
1220
a
b
x
3
4
2、指针与指针变量 程序中对变量的操作,实际上是对某个地址的存储单元进行操作。这种直接按变量的地址存取变量值的方式称为“直接存取”方式。 指针变量:用来存放内存地址的变量称为指针变量。设:指针变量p中存放了变量a的地址。则有如下图所示:要访问 a 所代表的存储单元,可以先找变量p 的地址1220,从中取出a 的地址,然后再去访问以1010为首地址的存储单元。这种通过指针变量先得到某变量地址,然后再存取该变量值的方式称为“间接存取“方式。 通常称变量p 指向了变量a ,所以称p 是指针变量(p 中存放了a 的地址)。我们将变量的“地址”称为该变量的“指针”。“指针”和“地址”是同一个意义。
a
3
4
1010
1012
1014
1220
p
1010
1010
1010
1011
a
p
1220
二、指针的类型与指针的定义指针变量的定义:形式: 类型名*指针变量名1,指针变量名2,…;如: int *pi,*pj;说明:* 是说明符,用来说明该变量是指针变量; int 是类型名,用来说明 pi 和 pj 是指向整型变量的指针。指针的类型:指针所指向的变量的类型。 int 也称为 pi 、pj 的“基类型”如:int *p; /*p中只能存放整型变量的地址*/ double *pd; /*pd中只能存放double类型变量的地址*/ float *pf; /*pf中只能存放float 类型变量的地址*/ char *st; /*st中只能存放字符类型变量的地址*/又如:int *p,i,k; i=3; p=&i; /*将i 的地址赋给指针变量*/ k=*p; /*将所指地址中的内容赋给k*/注:int *P ; 此时*P表示指针类型,* 是指针类型说明符,在非定义中的*p 为所指变量中存放的内容,在此例中代表存储单元i 。
三、指针变量的引用指针运算: & 运算符为取地址,如:&x 的值为x 的地址。 * 运算符为指向,如:*P表示P指向的变量。如: int a,*