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

《C++大学教程》2007.9 第7章间接访问一指针 指针的概念 指针运算与数组 指针作为函数参数和返回值 动态内存分配 水 字符串再讨论 指针数组与多级指针 指向多维数组的指针 指向函数的指针
《C++大学教程》 2007.9 v 指针的概念 v 指针运算与数组 v 指针作为函数参数和返回值 v 动态内存分配 v 字符串再讨论 v 指针数组与多级指针 v 指向多维数组的指针 v 指向函数的指针

指针介绍 《C++大学教程》2007.9 今天我们介绍C+语言最主要的特性:指针,为了成 为一个优秀的C语言程序员,你必须掌握指针并熟 练地使用它们。 指针 ·是内存的地址并可作为数据 •是一个灵活和危险的机制 ·允许共享处理数据 •允许内存动态分配(只要需要,而非预先定义)
《C++大学教程》 2007.9 今天我们介绍C++语言最主要的特性:指针,为了成 为一个优秀的C语言程序员,你必须掌握指针并熟 练地使用它们。 指针 •是内存的地址并可作为数据 •是一个灵活和危险的机制 •允许共享处理数据 •允许内存动态分配(只要需要,而非预先定义)

《C++大学教程》2007.9 指针的概念 指针就是把地址作 如在某一程序 为数据,可以把地 中定义了 址存储在内存中 int x; 2 1000 指针变量:存储地 X=2; 址的变量 如系统给x分 配的空间是 变量的指针:当一 1000号单元, 个变量存储另一个 则指向x的指 1000 变量的地址时,那 针是另一个变 我们说它就是那个 量,该变量中 变量的指针 存放的数据为 1000
《C++大学教程》 2007.9 v 指针就是把地址作 为数据,可以把地 址存储在内存中 v 指针变量:存储地 址的变量 v 变量的指针:当一 个变量存储另一个 变量的地址时,那 我们说它就是那个 变量的指针 1000 2 1000 如在某一程序 中定义了 int x; X=2; 如系统给x分 配的空间是 1000号单元, 则指向x的指 针是另一个变 量,该变量中 存放的数据为 1000

关于指针的几个问题 +大学教程》2007.9 如何定义一个变量是指针? 类型标识符 *指针变量; 如:int*intp; double *doublep 如何把某一变量的地址置入一个指针变量中?因为我们不 知道系统分配给变量的真正地址是什么。 > 用地址运算符“&”解决。如表达式“&x”返回的是变量× 的地址。如:intp=&x; > &运算符后面不能跟常量或表达式。如&2是没有意义的, &(m*n+p)。也是没有意义的 ~如何用指针变量处理和改变它所指向的单元的值? >用引用运算符“*”解决。如*intp表示的是intp指向的这 个单元的内容。 > 在对intp使用引用运算之前,必须先对intp赋值
《C++大学教程》 2007.9 v 如何定义一个变量是指针? 类型标识符 *指针变量; 如:int *intp; double *doublep v 如何把某一变量的地址置入一个指针变量中?因为我们不 知道系统分配给变量的真正地址是什么。 Ø 用地址运算符 “&” 解决。如表达式 “&x” 返回的是变量 x 的地址。如:intp = &x; Ø & 运算符后面不能跟常量或表达式。如 &2 是没有意义的, &(m * n + p )。也是没有意义的 v 如何用指针变量处理和改变它所指向的单元的值? Ø 用引用运算符 “*” 解决。如 *intp 表示的是 intp 指向的这 个单元的内容。 Ø 在对 intp 使用引用运算之前,必须先对 intp 赋值

《C++大学教程》2007.9 指针实例 如执行: 如有: *intp=Y+4; int X,*intp,Y; X=3; X 3 1000 Y=4; 4 1004 8 1000 intp=&X; Y 4 1004 intp 1000 intp 1000 注意:不能用 intp=100; 因为我们永远不知道变量存储的真实地址,而且 程序每次运行可能都不同
《C++大学教程》 2007.9 如有: 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; 因为我们永远不知道变量存储的 真实地址,而且 程序每次运行可能都不同

《C++大学教程》2007.9 指针的定义及使用 指针变量可以指向不同的变量。如上例中itp指 向x,我们可以通过对intp的重新赋值改变指针的 指向。如果想让intp指向y,只要执行imtp-&y就 可以了。这时,intp与x无任何关系。 同类的指针变量之间可相互赋值,表示二个指针 指向同一内存空间。 父 空指针 >指针没有指向任何空间 >空指针用常量NULL表示,NULL的值一般赋为0 >不能引用空指针指向的值
《C++大学教程》 2007.9 v 指针变量可以指向不同的变量。如上例中intp指 向x,我们可以通过对intp的重新赋值改变指针的 指向。如果想让intp指向y,只要执行intp=&y就 可以了。这时,intp与x无任何关系。 v 同类的指针变量之间可相互赋值,表示二个指针 指向同一内存空间。 v 空指针 Ø 指针没有指向任何空间 Ø 空指针用常量NULL表示,NULL的值一般赋为0 Ø 不能引用空指针指向的值

《C++大学教程》2007.9 指针变量的使用 设有定义 执行语句: 执行语句: 执行语句: int x,y; X=23; p1=&x; *p1=34; int *pl,*p2; y=234; p2=&y; *p2=17; 0o4 1000 23 X 1000 23 1000 34 1004 234 1004 234 1004 17 10 pl 1008 pl 1008 1000 pl 1008 1000 pl 1012 p2 1012 p2 1012 1004 p2 1012 1004 p2
《C++大学教程》 2007.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=17; 1000 34 x 1004 17 y 1008 1000 p1 1012 1004 p2

指针实例 《C++大学教程》2007.9 有以下结构 pl a p2 b 比较执行pl=p2和*p1=*p2后的不同结果。 解: A B pl a pl a B B p2 b p2 b
《C++大学教程》 2007.9 有以下结构 A p1 a B p2 b 比较执行 p1=p2和 *p1= *p2后的不同结果。 解: A p1 a B p2 b B p1 a B p2 b

《C++大学教程》2007.9 指针的初始化 指针在使用前必须初始化。 仅和别的变量一样定义指针,不初始化是一 个比较普通的错误。 没有初始化的指针可能指向任意地址,对这 些指针作操作可能会导致程序错误。 NULL是一个特殊指针值,称为空指针。它的 值为0。它可被用来初始化一个指针,表示不 指向任何地址
《C++大学教程》 2007.9 v 指针在使用前必须初始化。 v 仅和别的变量一样定义指针,不初始化是一 个比较普通的错误。 v 没有初始化的指针可能指向任意地址,对这 些指针作操作可能会导致程序错误。 v NULL是一个特殊指针值,称为空指针。它的 值为0。它可被用来初始化一个指针,表示不 指向任何地址

《C++大学教程》2007.9 第7章间接访问一指针 指针的概念 指针运算与数组 指针作为函数参数和返回值 动态内存分配 水 字符串再讨论 指针数组与多级指针 指向多维数组的指针 指向函数的指针
《C++大学教程》 2007.9 v 指针的概念 v 指针运算与数组 v 指针作为函数参数和返回值 v 动态内存分配 v 字符串再讨论 v 指针数组与多级指针 v 指向多维数组的指针 v 指向函数的指针
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 上海交通大学:《程序设计基础》课程教学资源(PPT课件讲稿)第7章 数组.ppt
- 上海交通大学:《程序设计基础》课程教学资源(PPT课件讲稿)第6章 过程封装——函数.ppt
- 上海交通大学:《程序设计基础》课程教学资源(PPT课件讲稿)第4-5章 控制结构.ppt
- 上海交通大学:《程序设计基础》课程教学资源(PPT课件讲稿)第1-2章 计算机简介、C++编程入门.ppt
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Sample Exam Questions_Midterm 2008 sample.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Sample Exam Questions_midterm 2 sample solution.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Recitation Notes_recitation 14.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Recitation Notes_Recitation 11.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Other Resources_intrduction to computer and programming with C++ and MATLAB.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment13.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment12.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment11.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment 14.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment 10_1.pdf
- 上海交通大学:《程序设计基础》课程教学讲义(密西根学院)Assignments_assignment 10.pdf
- 上海交通大学:《程序设计基础》课程教学资源(习题集)C语言_VIII.结构体与共用体.pdf
- 上海交通大学:《程序设计基础》课程教学资源(习题集)C语言_VII.指针.pdf
- 上海交通大学:《程序设计基础》课程教学资源(习题集)C语言_VI.编译预处理.pdf
- 上海交通大学:《程序设计基础》课程教学资源(习题集)C语言_V.数组.pdf
- 上海交通大学:《程序设计基础》课程教学资源(习题集)C语言_IX.文件.pdf
- 上海交通大学:《程序设计基础》课程教学资源(PPT课件讲稿)第9章 数据封装——结构体.ppt
- 上海交通大学:《计算机硬件技术》课程PPT教学课件(计算机概论,孙德文).ppt
- 上海交通大学:《理论力学》课程教学资源(PPT讲稿)平面矢量.ppt
- 中华人民共和国国家标准(GB/T8567一2006 代替GB/T8567-1988)计算机软件文档编制规范 Specification for computer software documentation.pdf
- 《软件工程概论》课程教学资源(参考资料)Guide to the Software Engineering Body of Knowledge(SWEBOK)Version 3.0.pdf
- 《软件工程概论》课程教学资源(参考资料)软件工程知识体系指南(2004版).pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)第1章 Introduction of software testing.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)第3章 Test environment and tools.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)第2章 Prerequisites Mathematics knowledge of software test.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)第4章 Fundamental theory and methods of software test.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)Chapter 2 fundamentals of software test.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)chapter 1 Introduction of software testing.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)教学大纲(高级软件测试).doc
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)chapter 3 Test environment and tools.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)Chapter 2 fundamentals of software test.pdf
- 上海交通大学:《软件测试与质量控制》课程教学资源(课件讲稿)chapter 4 test case generation 1.pdf
- 上海交通大学:《面向对象分析与设计 Object Oriented Analysis and Design》课程教学资源(PPT课件讲稿)01 Introduction to Object Technology.ppt
- 上海交通大学:《面向对象分析与设计 Object Oriented Analysis and Design》课程教学资源(PPT课件讲稿)02 Introduction to Visual Modeling.ppt
- 上海交通大学:《面向对象分析与设计 Object Oriented Analysis and Design》课程教学资源(PPT课件讲稿)04 Interaction Diagrams.ppt
- 上海交通大学:《面向对象分析与设计 Object Oriented Analysis and Design》课程教学资源(PPT课件讲稿)05 ClassDiagrams.ppt