上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第七章 间接访问——指针

图 第7章间接访问一指针 ©指针的概念 ©指针运算与数组 ©动态内存分配 字符串再讨论 指针作为函数参数和返回值 ©指针数组与多级指针 ®指向多维数组的指针 ©指向函数的指针 司 LoCCS
第7章 间接访问—指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 指针作为函数参数和返回值 指针数组与多级指针 指向多维数组的指针 指向函数的指针

@ 指针的概念 ©指针就是把(变量)地址作为数据处理 ©指针变量:存储地址的变量 ©变量的指针:当一个变量存储另一个变量的地址 时,那我们说前者是后者的指针 ©使用指针的目的:提供间接访问 司 LoCCS
指针的概念 指针就是把(变量)地址作为数据处理 指针变量:存储地址的变量 变量的指针:当一个变量存储另一个变量的地址 时,那我们说前者是后者的指针 使用指针的目的:提供间接访问

③ 指针的概念 续 ©如在某一程序中定义了 int x 2; X 2 1000 如系统给x分配的空间是1000号单 元,则指向x的指针是另一个变量 p,p中存放的数据为1000 1000号单元的内容有两种访问方 1000 p 式: ·访问变量x(直接访问) ·访问变量p指向的单元的内容(间接 访问) 司 LoCCS
指针的概念 续 如在某一程序中定义了 int x = 2; 如系统给x分配的空间是1000号单 元,则指向x的指针是另一个变量 p,p中存放的数据为1000 1000号单元的内容有两种访问方 式: • 访问变量x(直接访问) • 访问变量p指向的单元的内容(间接 访问) 1000 2 1000 x p

③ 定义指针变量 ©定义指针变量要告诉编译器该变量中存放的是一 个地址。 ④指针变量的主要用途是提供间接访问,因此也需 要知道指针指向的单元的数据类型 圈指针变量的定义 类型标识符*指针变量; 如:int*intp; double *doublep; int *p,x,*q; 司 LoCCS
定义指针变量 定义指针变量要告诉编译器该变量中存放的是一 个地址。 指针变量的主要用途是提供间接访问,因此也需 要知道指针指向的单元的数据类型 指针变量的定义 类型标识符 *指针变量; 如:int *intp; double *doublep; int *p, x, *q;

图 指针变量的操作 如何让指针指向某一变量?因为我们不知道系统分 配给变量的真正地址是什么。 ·用地址运算符“&”解决。如表达式“&x”返回的是变 量x的地址。如:intp=&x; ·&运算符后面不能跟常量或表达式。如&2是没有意义的, &(m*n+p)。也是没有意义的 如何通过指针变量处理和改变它所指向的单元的值? 。用引用运算符“*”解决。如*intp表示的是intp指向 的这个单元的内容。如:*intp=5等价于x=5 ·在对intp使用引用运算之前,必须先对intp赋值 司 LoCCS
指针变量的操作 如何让指针指向某一变量?因为我们不知道系统分 配给变量的真正地址是什么。 • 用地址运算符 “&” 解决。如表达式 “&x” 返回的是变 量 x 的地址。如:intp = &x; • & 运算符后面不能跟常量或表达式。如 &2 是没有意义的, &(m * n + p )。也是没有意义的 如何通过指针变量处理和改变它所指向的单元的值? • 用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向 的这个单元的内容。如:*intp = 5 等价于 x = 5 • 在对 intp 使用引用运算之前,必须先对 intp 赋值

@ 指针实例 如执行: 如有: *intp=Y+4; int X,*intp,Y; 3 1000 X=3; Y 4 1004 Y=4; →X 8 1000 intp=&X; Y 4 1004 intp 1000 intp 1000 注意:不能用 intp=100; 因为我们永远不知道变量存储的真实地址,而且 程序每次运行变量地址可能都不同。 司 LoCCS
指针实例 如有: int X, *intp, Y; X=3; Y=4; intp=&X; 如执行: *intp=Y+4; 注意:不能用 intp=100; 因为我们永远不知道变量存储的 真实地址,而且 程序每次运行变量地址可能都不同

③ 指针使用 ©指针变量可以指向不同的变量。 intp=&x; intp=&y。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 intpl=intp; 空指针 ·指针没有指向任何空间 ·空指针用常量NULL表示,NULL的值一般赋为O ·不能引用空指针指向的值 LoCCS
指针使用 指针变量可以指向不同的变量。 intp=&x; intp=&y。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 intp1=intp; 空指针 • 指针没有指向任何空间 • 空指针用常量NULL表示,NULL的值一般赋为0 • 不能引用空指针指向的值

指针变量的使用 设有定义 执行语句: 执行语句: 执行语句: int x,y; X=23; p1=&x; *p1=34; int *p1,*p2; y=234; p2=&y; p2=p1; 1000 X 1000 23 1000 23 X 1000 34 X 1004 y 1004 234 y 1004 234 y 1004 234 y 1008 p1 1008 p1 1008 1000 p1 1008 1000 p1 1012 p2 1012 p2 1012 1004 p2 1012 1000 p2 Loccs
指针变量的使用 设有定义 int x, y; int *p1, *p2; 1000 x 1004 y 1008 p1 1012 p2 执行语句: x=23; y=234; 1000 23 x 1004 234 y 1008 p1 1012 p2 执行语句: p1=&x; p2=&y; 1000 23 x 1004 234 y 1008 1000 p1 1012 1004 p2 执行语句: *p1=34; p2=p1; 1000 34 x 1004 234 y 1008 1000 p1 1012 1000 p2

指针实例 有以下结构 pI a B p2 b 比较执行pl=p2和*pl=*p2后的不同结果。 解: A B pl a pI a B B p2 b p2 b 司 LoCcS
指针实例 有以下结构 A p1 a B p2 b 比较执行 p1=p2和 *p1= *p2后的不同结果。 解: A p1 a B p2 b B p1 a B p2 b

指针的初始化 ©指针在使用前必须初始化。 和别的变量一样,定义指针不初始化就引用是 一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些 指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值 为0。它可被用来初始化一个指针,表示不指 向任何地址。 思考:int*p;*p=5; 有什么问题? 司 LoCCS
指针的初始化 指针在使用前必须初始化。 和别的变量一样,定义指针不初始化就引用是 一个比较普通的错误。 没有初始化的指针可能指向任意地址,对这些 指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的值 为0。它可被用来初始化一个指针,表示不指 向任何地址。 思考:int *p; *p = 5; 有什么问题?
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)函数指针的应用、气泡排序法.pptx
- 《机器学习与知识发现》教学资源:Linear Algebra Review and Reference.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)09 机器学习.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)08 数据可视化.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)07 数据科学方法学.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)06 数据统计初步.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)05 数据收集.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)04 数据分析入门.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)03 Python简介.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)02 数据科学的应用.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)10 TensorFlow-深度学习实践.pdf
- 《数据科学引论——Python之道》课程教学资源(教案讲义)01 什么是数据科学.pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)09 机器学习.pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)08 数据可视化.pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)07 数据科学方法学(2/2).pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)07 数据科学方法学(1/2).pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)06 统计初步.pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)05 网络爬虫介绍和样例.pdf
- 《数据科学引论——Python之道》课程教学资源(课件讲稿)05 爬虫环境搭建.pdf
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第三章 分支程序设计.ppt
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第二章 通过例子学习.ppt
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第五章 批量数据处理——数组.ppt
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第六章 过程封装——函数.ppt
- 上海交通大学:《程序设计思想与方法》课程教学资源(PPT课件讲稿)第四章 循环控制.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第10章 计算机病毒的防范技术.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第11章 常用杀毒软件及其解决方案.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第12章 计算机病毒防治策略.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第01章 计算机病毒概述(刘功申).ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第02章 计算机病毒理论模型.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第03章 计算机病毒结构及技术分析.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第04章 传统计算机病毒.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第05章 特洛伊木马(Trojan horse).ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第06章 宏病毒.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第07章 Linux病毒技术.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第08章 移动智能终端恶意代码.ppt
- 上海交通大学:《恶意代码与计算机病毒(原理、技术和实践)》课程教学资源(PPT课件)第09章 新型计算机病毒.ppt
- 上海交通大学:《高级计算机系统结构》课程教学资源(讲稿).pdf
- 计算机系统结构课程教材:计算机科学丛书《深入理解计算机系统》【兰德尔E.布莱恩特、大卫R.奥哈拉伦】原书第三版(中文版)PDF电子书(共十二章)Computer Systems A Programmer's Perspective.pdf
- 南京大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)第一章 绪论.ppt