1 / 23
文档名称:

C语言专业教学课件3.ppt.txt

格式:txt   页数:23
下载后只包含 1 个 TXT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言专业教学课件3.ppt.txt

上传人:xyb333199 2012/10/22 文件大小:0 KB

下载得到文件列表

C语言专业教学课件3.ppt.txt

文档介绍

文档介绍:C语言专业教学课件
第8章
指针
重庆工学院计算机学院
第 8 章指针
指针是一种特殊的数据类型; 指针概念是C语言中较难理解和较难掌握的概念。
C程序设计中使用指针可以: l使程序简洁、紧凑、高效 l有效地表示复杂的数据结构 l动态分配内存 l得到多于一个的函数返回值
§ 指针与指针变量的概念 P155
要明白什么是指针,必须弄清楚数据在内存中是如何存储的,又是如何读取的。内存区的每一个字节有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。
§变量与地址
内存中每个字节有一个编号-----地址内存 0
程序中: int i;
float k;
编译或函数调用时为其分配内存单元
…...
2000 2001 2002 2003
i k
2005
…...
变量是对程序中数据存储空间的抽象
«指针与指针变量 P155
v指针:一个变量的地址 v指针变量:专门存放变量地址的变量在C语言中,指针是一种特殊的变量,它是存放地址的。
指针 2000 …... 整型变量i
变量的地址
2001
10
变量的内容
2002
2003 2004 2005 2000 2006 指针变量变量地址(指针) 指向变量变量值…... 变量i_pointer 指针变量
地址存入指针变量
«变量的直接访问与间接访问 P156
v直接访问:按变量地址存取变量值 v间接访问:通过存放变量地址的变量去访问变量
…...

整型变量i
i=3;
-----直接访问
2000 2001 2002 2003 2004 3 20 10
变量i_pointer
2000
2005
2006
指针变量

i_pointer=20;
-----间接访问
…...

k=i; k=*i_pointer;
…...
--直接访问--间接访问
2000 2001
2002 2003 2004 2005 2000
整型变量i 整型变量k
10
10
变量i_pointer 指针变量
2006
…...
«两种访问方式的特点
两种访问方式:相当于某人甲(系统)要找某人乙(变量)来类比,有两种方法: (1)甲知道乙在何处,直接去找就是(即直接访问)。(2)甲不知道乙在哪,但丙(指针变量)知道,此时甲可以这么做:先找丙,从丙处获得乙的去向,然后再找乙(即间接访问)。指针变量与其所指向的变量之间的关系
i_pointer 2000
变量i
3
i
&i i=3;
i_pointer
i_pointer *i_pointer=3
i_pointer
§ 指针变量的定义和引用 P157
«指针变量的定义
v一般形式: [存储类型] 例数据类型*指针名; int *p1,*p2; 表示定义指针变量 float *q ; 合法标识符指针变量本身的存储类型指针的目标变量的数据类型不是‘*’运算符 static char *name; 注意: 1、int *p1, *p2; 与 int p1, p2; 2、指针变量名是p1,p2 ,不是*p1,*p2 3、指针变量只能指向定义时所规定类型的变量 4、指针变量定义后,变量值不确定,应用前必须先赋值
«指针变量的初始化
一般形式:[存储类型] 数据类型*指针名=初始地址值; 例 int i; int *p=&i; 赋给指针变量, 不是赋给目标变量变量必须已说明过类型应一致

例 int i; int *p=&i; int *p=&i; int i; int *q=p;
用已初始化指针变量作初值
例 main( ) { int i; static int *p=&i; ..............
}
(´ )
不能用auto变量的地址去初始化static型指针
指针变量必须先赋值,再使用.
例 main( ) { int i=10; int *p; *p=i; printf(“%d”,*p); }
危险!
…...
2000 2001 2002 2003 2004 2005 2006 …... 随机
整型变量i
10
指针变量p
例 main( ) { int i=10,k; int *p; p=&k; *p=i; printf(“%d”,*p); }
«零指针与空类型指针
v零指针:(空指针)P161
l 定义:指针变量值为零 l 表示: int * p=0;
p指向地址为0的单元, 系统保证该单元不作它用表示指针变量值没有意义例例 char *p1