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

《程序设计》cs.u20119 第7章间接访问指针 指针的概念 指针运算与数组 动态内存分配 字符串再讨论 冷指针作为函数参数和返回值 冷指针数组与多级指针 指向多维数组的指针 指向函数的指针 程序设计-1
《程序设计》 cs.sjtu 2011.9 程序设计 - 1 第7章 间接访问—指针 ❖ 指针的概念 ❖ 指针运算与数组 ❖ 动态内存分配 ❖ 字符串再讨论 ❖ 指针作为函数参数和返回值 ❖ 指针数组与多级指针 ❖ 指向多维数组的指针 ❖ 指向函数的指针

指针介绍 《程序设计》cs.u20119 本章将介绍C艹语言的一个重要的特性:指针,为了 成为一个优秀的C艹语言程序员,你必须掌握指针 并熟练地使用它们。 指针 是内存的地加并可作为数据 是一个灵活和危险的机制 °允许处理数据 °允许内存动分配(只要需要,而非预先定义) 程序设计-2
《程序设计》 cs.sjtu 2011.9 程序设计 - 2 指针介绍 本章将介绍C++语言的一个重要的特性:指针,为了 成为一个优秀的C++语言程序员,你必须掌握指针 并熟练地使用它们。 指针 •是内存的地址并可作为数据 •是一个灵活和危险的机制 •允许共享处理数据 •允许内存动态分配(只要需要,而非预先定义)

《程序设计》cs.u20119 指针的概念 指针就是把地址作为数据处理 指针变量:存储地址的变量 变量的指针:当一个变量存储另一个变量的 地址时,那我们说它就是那个变量的指针 使用指针的目的:提供间接访问 程序设计
《程序设计》 cs.sjtu 2011.9 程序设计 - 3 指针的概念 ❖ 指针就是把地址作为数据处理 ❖ 指针变量:存储地址的变量 ❖ 变量的指针:当一个变量存储另一个变量的 地址时,那我们说它就是那个变量的指针 ❖ 使用指针的目的:提供间接访问

《程序设计》cs.u20119 指针的概念续 冷如在某一程序中定义了 int x=2 X 21000 冷如系统给x分配的空间是1000号单 元,则指向x的指针是另一个变量 p,p中存放的数据为1000 1000号单元的内容有两种访问方 1000 式 >访问变量x(直接访问) 访问变量p指向的单元的内容(间接 访问) 程序设计-4
《程序设计》 cs.sjtu 2011.9 程序设计 - 4 指针的概念 续 ❖ 如在某一程序中定义了 int x = 2; ❖ 如系统给x分配的空间是1000号单 元,则指向x的指针是另一个变量 p,p中存放的数据为1000 ❖ 1000号单元的内容有两种访问方 式: ➢ 访问变量x(直接访问) ➢ 访问变量p指向的单元的内容(间接 访问) 1000 2 1000 x p

《程序设计》cs.u20119 定义指针变量 冷定义指针变量要告诉编译器该变量中存放的是一 个地址 指针变量的主要用途是提供间接访问,因此也需 要知道指针指向的单元的数据类型 冷指针变量的定义 类型标识符指针变量; 如:int*intp; double *doubler int *p, x, q9 程序设计-5
《程序设计》 cs.sjtu 2011.9 程序设计 - 5 定义指针变量 ❖ 定义指针变量要告诉编译器该变量中存放的是一 个地址。 ❖ 指针变量的主要用途是提供间接访问,因此也需 要知道指针指向的单元的数据类型 ❖ 指针变量的定义 类型标识符 *指针变量; 如:int *intp; double *doublep; int *p, x, *q;

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

《程序设计》cs.u20119 指针实例 如执行 如有 intp=Y+4: int X, *intp, Y X|3 1000 X=3 1004 Y=4 X 8 1000 tp=&X Y4 1004 intp 1000 p1000 注意:不能用intp=100; 因为我们永远不知道变量存储的真实地址,而且 程序每次运行变量地址可能都不同。 程序设计-7
《程序设计》 cs.sjtu 2011.9 程序设计 - 7 指针实例 如有: int X, *intp, Y; X=3; Y=4; intp=&X; intp 1000 1004 Y 4 1000 X 3 如执行: *intp=Y+4; intp 1000 1004 Y 4 1000 X 8 注意:不能用 intp=100; 因为我们永远不知道变量存储的 真实地址,而且 程序每次运行变量地址可能都不同

《程序设计》cs.u20119 指针使用 冷指针变量可以指向不同的变量。如上例中intp指向x, 我们可以通过对ntp的重新赋值改变指针的指向。 如果想让intp指向y,只要执行intp=&y就可以了。 这时,int与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 空指针 >指针没有指向任何空间 >空指针用常量NULL表示,NULL的值一般赋为0 >不能引用空指针指向的值 程序设计-8
《程序设计》 cs.sjtu 2011.9 程序设计 - 8 指针使用 ❖ 指针变量可以指向不同的变量。如上例中intp指向x, 我们可以通过对intp的重新赋值改变指针的指向。 如果想让intp指向y,只要执行intp=&y就可以了。 这时,intp与x无任何关系。 ❖ 同类的指针变量之间可相互赋值,表示二个指针指 向同一内存空间。 ❖ 空指针 ➢ 指针没有指向任何空间 ➢ 空指针用常量NULL表示,NULL的值一般赋为0 ➢ 不能引用空指针指向的值

《程序设计》cs.u20119 指针变量的使用 设有定义 执行语句:执行语句:执行语句: Int x, y; x=23 p1=&X; p1=34 ntp1,p2;y=234; p2=&y; p2=p1 1000 100023 100023 100034 1004 1004234 1004234 1004234 1008 pl1008 pl10081000p110081000p1 1012 p21012 p210121004p210121000p2 程序设计-9
《程序设计》 cs.sjtu 2011.9 程序设计 - 9 指针变量的使用 设有定义 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

指针实例 《程序设计》cs.u20119 有以下结构 p1 a Bb 比较执行p1=p2和*p1=*p2后的不同结果。 解 B p B B 2 b 2 程序设计10
《程序设计》 cs.sjtu 2011.9 程序设计 - 10 指针实例 有以下结构 A p1 a B p2 b 比较执行 p1=p2和 *p1= *p2后的不同结果。 解: A p1 a B p2 b B p1 a B p2 b
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据库系统概论》课程教学资源(PPT课件讲稿)数据结构实用教程(共十章).ppt
- 大连理工大学:《计算机网络》课程教学资源(PPT课件讲稿)Chapter 1 Introduction(roadmap,主讲:孙伟峰).ppt
- 《计算机网络基础》课程PPT教学课件(讲稿)第4章 IP协议.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第4章 存储器系统接口.ppt
- 《网页设计与制作》课程PPT教学课件(Fireworks Mx 2004)第九章 Firework图像处理.ppt
- 《数据结构》课程教学资源(PPT讲稿)二叉树和二叉搜索树 Trees, Binary Trees, and Binary Search Trees.ppt
- Robust Networking Architecture and Secure Communication Scheme for Heterogeneous Wireless Sensor Networks.pptx
- 中国科学技术大学:《算法基础》课程教学资源(PPT课件讲稿)第五讲 概率分析与随机算法.pptx
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Data Preprocessing.ppt
- 《编译原理与技术》课程教学资源(PPT课件讲稿)运行环境.ppt
- 华南理工大学:神经计算的生理和动力学指标(PPT讲稿).ppt
- 中国科学技术大学:《嵌入式操作系统 Embedded Operating Systems》课程教学资源(PPT课件讲稿)第七讲 存储器管理.ppt
- 中国科学技术大学:《网络信息安全 NETWORK SECURITY》课程教学资源(PPT课件讲稿)Windows 操作系统.ppt
- 《Java面向对象程序设计》课程教学资源(PPT课件讲稿)第四章 Java图形用户界面设计 4.3 事件处理.pptx
- 南京航空航天大学:《C++》课程电子教案(PPT课件讲稿)第2章 文件操作.pptx
- MSC Software Corporation:Dynamic System Modeling, Simulation, and Analysis Using MSC.EASY5(Introductory Class).ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)构件化软件 Component Software.ppt
- 新乡学院:《PHP动态网站开发》课程教学资源(教学大纲).pdf
- 《Android 程序设计基础》课程教学资源(PPT课件讲稿)第8章 数据存储和访问.ppt
- 《高级软件工程》课程教学大纲 Advanced Software Engineering.doc
- 编译程序构造 COMPILER CONSTRUCTION(PPT讲稿)原理与实践 Principles and Practice.ppt
- 《3ds Max 9》教学资源(PPT课件)第8章 灯光、摄影机、渲染输出.ppt
- 《运筹学与最优化方法》课程教学资源(PPT课件讲稿)第十章 智能优化计算简介.ppt
- 东北大学:《可信计算基础》课程教学资源(PPT课件讲稿)第五讲 分布式系统的安全(主讲:周福才).ppt
- 《电脑组装与维护实例教程》教学资源(PPT课件讲稿)第14章 系统的维护.ppt
- 《PHP程序设计》教学资源(PPT课件讲稿)项目七 Ajax商品发布.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第六章 传输层.ppt
- 《计算机系统安全》课程PPT教学课件(信息安全与管理)第九章 防火墙.ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Getting to Know Your Data.ppt
- 香港浸会大学:Computer Security(PPT课件讲稿)Cryptography Chapter 1 Symmetric Ciphers.ppt
- 《计算机文化基础》课程教学资源(PPT课件讲稿)第九章 多媒体技术基础.ppt
- 数据挖掘10大算法产生过程(PPT讲稿).ppt
- 清华大学:高校信息化建设理论与规划(PPT讲稿).ppt
- 《汇编语言程序设计》课程教学资源(PPT课件讲稿)第二章 IBM-PC微机的功能结构.ppt
- 《软件工程》课程教学资源(PPT课件讲稿)详细设计.ppt
- 同济大学:《大数据分析与数据挖掘 Big Data Analysis and Mining》课程教学资源(PPT课件讲稿)Decision Tree.ppt
- 上海交通大学:《网络科学导论》课程PPT教学课件(Network Science An Introduction)Chapter 4 Degree Correlations & Community Structure.pptx
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第五章 串和数组.pps
- 最小生成树(PPT课件讲稿)Minimum Spanning Trees.pptx
- 《数据结构》课程教学资源(PPT课件讲稿)第10章 内排序.ppt