C语言程序设计实用教程-教学课件--第9章-指针

上传人:夏日****8 文档编号:281326299 上传时间:2022-04-23 格式:PPT 页数:137 大小:711.50KB
返回 下载 相关 举报
C语言程序设计实用教程-教学课件--第9章-指针_第1页
第1页 / 共137页
C语言程序设计实用教程-教学课件--第9章-指针_第2页
第2页 / 共137页
C语言程序设计实用教程-教学课件--第9章-指针_第3页
第3页 / 共137页
C语言程序设计实用教程-教学课件--第9章-指针_第4页
第4页 / 共137页
C语言程序设计实用教程-教学课件--第9章-指针_第5页
第5页 / 共137页
点击查看更多>>
资源描述

《C语言程序设计实用教程-教学课件--第9章-指针》由会员分享,可在线阅读,更多相关《C语言程序设计实用教程-教学课件--第9章-指针(137页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计实用教程语言程序设计实用教程第第9章章 指指 针针1佳木斯大学第9章9.19.29.39.49.59.69.79.8本章学习目标掌握指针与指针变量的概念,熟练使用指针与地址运算符掌握变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据掌握用指针作函数参数掌握返回指针值的指针函数掌握指针数组,指向指针的指针,main函数的命令行参数2佳木斯大学第9章9.19.29.39.49.59.69.79.8【教学目的教学目的】1、掌握直接访问和间接访问、指针的、掌握直接访问和间接访问、指针的概念概念2、掌握指针变量的概念,熟练使

2、用指、掌握指针变量的概念,熟练使用指针与地址运算符针与地址运算符3、掌握指向变量指针的定义和使用、掌握指向变量指针的定义和使用3佳木斯大学第9章9.19.29.39.49.59.69.79.8【主要内容主要内容】1、相、相 关关 概概 念念2、指针变量的定义和使用、指针变量的定义和使用3、指针变量作函数参数、指针变量作函数参数4佳木斯大学第9章9.19.29.39.49.59.69.79.8【重点与难点重点与难点】1、间接访问的概念、指针变量作函数、间接访问的概念、指针变量作函数参数是难点参数是难点2、指针的概念、指针变量的定义和使、指针的概念、指针变量的定义和使用和指针变量作函数参数是重点用

3、和指针变量作函数参数是重点5佳木斯大学第9章9.19.29.39.49.59.69.79.8【教学方法教学方法】采用理论讲解、形象教学方法采用理论讲解、形象教学方法6佳木斯大学第9章9.19.29.39.49.59.69.79.8【教学内容教学内容】带着问题学习:带着问题学习:1)什么是直接访问和间接访问)什么是直接访问和间接访问2)指向变量的指针如何定义?指针有)指向变量的指针如何定义?指针有哪些运算?哪些运算?3)指针变量作函数参数时如何进行参)指针变量作函数参数时如何进行参数传递?数传递?7佳木斯大学第9章9.19.29.39.49.59.69.79.8指针指针是C语言中的一个重要的概念

4、,也是C语言的一个重要特色。正确而灵活地运用它,可以有效地表示复杂的数据结构,能动态分配内存,能方便地使用字符串,有效而方便地使用数组,在调用函数时能得到多于一个的值,能直接处理内存地址等,这对设计系统软件是很必要的。 8佳木斯大学第9章9.19.29.39.49.59.69.79.89.1 相相 关关 概概 念念9.1.1 变量的地址 如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定长度的空间。 9佳木斯大学第9章9.19.29.39.49.59.69.79.89.1 相相 关关 概概 念念如图9-1所示。假设程序中已定义了3个整型变量i、

5、j、k,编译时内存用户数据区系统分配2000和2001两个字节给变量i,2002和2003字节给变量j,2004和2005给变量k。如果执行赋值语句i=3;j=6;k=9;则3、6、9分别是i、j、k的值,而2000、2002 、2004分别是i、j、k的地址。20003变量i20026变量j20049变量k30102000变量i_pointer内存用户数据区图9-1 内存单元地址与内容10佳木斯大学第9章9.19.29.39.49.59.69.79.89.1 相相 关关 概概 念念 直接访问直接访问-按名存取按名存取一般程序一般程序中通过变中通过变量名对内量名对内存数据进存数据进行存取操行存

6、取操作作,实质上实质上是程序经是程序经编译后将编译后将变量名转变量名转变为内存变为内存地址地址.intint a a 0 x10010 x10030 x10050 x10070 x10090 x100B0 x100D0 x100F0 x1011 内存空间内存空间11佳木斯大学第9章9.19.29.39.49.59.69.79.89.1 9.1 相相相相 关关关关 概概概概 念念念念intint *pa *pa 0 x10010 x10030 x10050 x10070 x10090 x100B0 x100D0 x100F0 x1011 内存空间内存空间0 x100F指针变量指针变量指针指针指向

7、指向间接访问间接访问间接访问间接访问- -地址访问地址访问地址访问地址访问从另一个内存空间首先获取被访问的地从另一个内存空间首先获取被访问的地址址,再进行存取操作再进行存取操作.12佳木斯大学第9章9.19.29.39.49.59.69.79.89.1 相相 关关 概概 念念9.1.3 指针和指针变量一个变量的地址称为该变量的指针。例如,地址2000是变量i的指针。如果有一个变量专门用来存放另一变量的地址(即指针),则其称为指针变量。上述的i_pointer就是一个指针变量。注意区分指针和指针变量这两个概念。例如,可以说变量i的指针是2000,而不能说i的指针变量是2000。13佳木斯大学第9

8、章9.19.29.39.49.59.69.79.8 9.2 指针变量的定义和使用指针变量的定义和使用变量的指针就是变量的地址。存放变量地址的变量是指针变量,用来指向另一个变量。为了表示指针变量和它所指向的变量之间的联系,在程序中用“*”符号表示“指向”, 14佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9-2-1 指针变量的定义指针变量的定义 定义指针变量的一般形式为: 基类型基类型 *指针变量名指针变量名下面都是合法的定义: float *pointer_3; (pointer_3是指向实是指向实型变量的指针变量型变量的指针

9、变量) char *pointer_4; (pointer_4是指向字是指向字符型变量的指针变量符型变量的指针变量)15佳木斯大学第9章9.19.29.39.49.59.69.79.89-2 变量的指针和指向变量的指针变量变量的指针和指向变量的指针变量9-2-1 指针变量的定义指针变量的定义(1)指针变量前面的“*”,表示该变量的类型为指针型变量。注意:指针变量名是pointer_l、pointer_2,而不是*pointer_l、*pointer_2。 (2)在定义指针变量时必须指定基类型。指针变量所指向的变量的类型,即基类型。一个指针变量只能指向同一个类型的变量。16佳木斯大学第9章9.1

10、9.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9.2.2 指针变量的初始化和赋值指针变量在定义的同时也可以初始化。在C语言中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。变量地址可以通过取地址运算符“&”来获得。运算对象是变量或数组元素,运算结果是对应变量或数组元素的地址。例如:int k=1;*p=&k;它有两个含义,一是定义指针变量p,二是给指针变量p赋初值取k的地址,相当于int *p;p=&k; 17佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用一个

11、指针变量可以通过不同的方式获得一个确定的地址值,从而指向一个具体的对象。1通过求地址运算符(&)获得地址值例如:定义:int k=1, *q; 则赋值语句:q=&k;把变量k的地址赋给q,这时可以说q指向变量k18佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用2通过指针变量获得地址值 通过赋值运算把一个指针变量的值赋给另一个指针变量,使这两个指针指向同一地址。例如:有定义:int k,*p=&k, *q; 则语句q=p;使指针变量q中也存放变量k的地址,即变量p和变量q都指向k。注意:进行赋值运算时,赋值号两边指针变量的基类型必

12、须相同。19佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用3通过调用库函数获得地址值可以通过调用库函数malloc()和calloc(),在内存中动态存储单元的地址赋给指针变量。具体相关内容将在第10章介绍。20佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用4给指针变量赋空值除了给指针变量赋地址值外,还可以给指针变量赋NULL。它是在stdio.h头文件中定义的,其代码值为0,当执行p=NULL;后称p为空指针。p=NULL;等价于p=0或p=0;。21佳木斯大学

13、第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9-2-3 指针变量的引用指针变量的引用指针变量中只能存放地址指针变量中只能存放地址(指针指针),不要将一个整型量不要将一个整型量(或任何其它非或任何其它非地址类型的数据地址类型的数据)赋给一个指针变赋给一个指针变量。量。22佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9-2-3 指针变量的引用指针变量的引用 两个有关的运算符:两个有关的运算符:(1)&:取地址运算符。:取地址运算符。(2) *:指针运算符:指针运算符(或称或

14、称“间接访问间接访问”运算符运算符)。 “”和和“*”两个运算符的优先级两个运算符的优先级别相同,但按自右而左方向结合。别相同,但按自右而左方向结合。例如:例如:&a为变量为变量a的地址,的地址,*p为指针变为指针变量量p所指向的存储单元。所指向的存储单元。 23佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9-2-3 指针变量的引用指针变量的引用【例例9-1】 通过指针变量访问整型变量。通过指针变量访问整型变量。main( ) int a,b; int *p1,*p2; a=100;b=10; p1=&a; /*把变量把变量a

15、的地址赋给的地址赋给p1*/ p2=&b; /*把变量把变量b的地址赋给的地址赋给p2*/ printf(%d,%dn,a,b); printf(%d,%dn,*p1,*p2);运行结果为:运行结果为:100,10100,1024佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9-2-2 指针变量的引用指针变量的引用【例例9-2】 输入输入a和和b两个整数,按由大到小的顺序两个整数,按由大到小的顺序输出。输出。main( )int *p1,*p2,*p,a,b; scanf(%d,%d,&a,&b); p1=&a;p2=&b; i

16、f(ab) p=p1;p1=p2;p2=p; printf(na=%d,b=%dnn,a,b); printf(max=%d,min=%dn,*p1,*p2);运行情况如下:运行情况如下:5,9a=5,b=9max=9,min=525佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用9.2.4 指针的运算1在指针值上加减一个整数指向数组或字符串的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n、pa-n、pa+、+pa、pa-、-pa运算都是合法的。指针变量加上或减去一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。 26佳木斯大学第9章9.19.29.39.49.59.69.79.89.2 指针变量的定义和使用指针变量的定义和使用指向数组的指针变量向前或向后移动一个位置与地址加1或减1在概念上是不同的。因为数组可以有不同的类型,各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动一个位置表示指针变量指向下一个数据元素的首地址,而不是在原地址基础上加1

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号