- 1、本文档共70页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计 - 第7章 指针 Lecture8 指 针 目 录 指针概念 指针变量和指针运算 指向数组的指针 指向字符串的指针 指向函数的指针 返回指针值的函数 指针数组和指向指针的指针 1 指针 (Pointer) 指针表示变量等的存储地址 使用指针可以获得紧凑、高效的代码 使用指针也可能使程序晦涩难懂 指针的使用灵活方便 指针操作容易出错且难以调试 指针与数组关系密切 指针与地址 地址 通过首地址和数据类型可以访问内存中某一数据 数据类型决定所占用存储单元数 指针 就是地址 和类型有关 2 指针变量和指针运算 变量的指针和指针变量 指针变量的定义 地址运算符和指针运算符 指针变量的引用 指针的运算 变量的指针和指针变量 变量的指针 内存中存储某个变量的存储单元的首地址 指针(地址)实质上是一个整数(不是C的整型) 可以通过变量的地址来间接的访问变量 指针变量 指针(地址)是一个数据,也可以用另一个变量来存放,即指针变量 通过指针变量可以间接访问变量或内存数据 指针变量的定义 一般形式 基类型 *指针变量名; 说明 “基类型”表示该指针指向的数据的类型 可以定义基类型为空类型void的指针变量 举例 int *pi; char *pc1, c, *pc2; void *p; 地址运算符 (Address Operator) 地址运算符 获得操作数的地址(指针) 单目运算符,自右向左结合,优先级较高 操作数应为各种类型的内存变量、数组元素、结构体成员等 操作数不能是表达式、常量、寄存器变量 举例 scanf(%f, score); int i, *p=i; 指针运算符 (Indirection Operator) 指针运算符 * 获得指针指向的内存数据 又称“间接访问运算符” 单目运算符,自右向左结合,优先级较高 操作数为具有指针(地址)意义的值 举例 int i, *p=i; (*p)++; /* i++; */ 指针变量的引用 指针变量也要“先赋值,后使用” 没有赋值的指针变量所存储的地址数据是不确定的,对它的引用非常危险 对指针的赋值要注意类型匹配,必要时可以使用强制类型转换,但要慎重使用 *p可以用于与指针p的基类型相同类型的变量可以使用的任何场合 指针变量可以作为函数的参数 指针变量与所指变量的关系 指针变量引用举例 (07-01.C) 指针变量和一般变量一样,存放在它们之中的值是可以改变的,也就是说可以改变它们的指向,假设: int i,j,*p1,*p2; ? i=a;? j=b; p1=i; p2=j; 则建立如下图所示的联系: 这时赋值表达式: p2=p1; 就使p2与p1指向同一对象i,此时*p2就等价于i,而不是j,图所示: 如果执行如下表达式: *p2=*p1; 则表示把p1指向的内容赋给p2所指的区域, 此时就变成图所示: 【例】输入a和b两个整数,按先大后小的顺序输出a和b。分析程序: main( ) { int *p1,*p2,*p,a,b; scanf(%d,%d,a,b); p1=a;p2=b; if(ab) {p=p1;p1=p2;p2=p;} printf(\na=%d,b=%d\n,a,b); printf(max=%d,min=%d\n,*p1, *p2); } 指针变量作为函数参数 参数传递 仍然遵循“单向值传递”的规则 这里的传递规则是指针类型参数的值的传递 作为参数的指针型实参的值不会改变 但是对指针型实参所指向的内存数据所作的操作将不会随函数的返回而恢复 用途 借助指针类型参数可以改变多个数据的值 指针类型函数参数举例 (07-02.C) 指针的运算 运算类型 算术运算:加、减、自增、自减 关系运算:所有关系运算 赋值运算:一般赋值、加赋值、减赋值 上述运算在一定约束条件下才有意义(后详) 变量说明 p,q是同类型的指针变量 n是整型变量 指针的算术运算 条件:p,q是指向同一数据集合(数组)的指针 注意避免数组越界 指针的关系运算 条件 p,q是指向同一数据集合(数组)的指针 运算方式 pq、p=q、p==q、p!=q、p=q、pq pq:判断p所指元素是否在q所指元素之前 其他运算的含义与上述类似 若p,q不是指向同一数据集合的指针,则运算无意义 指针的赋值运算 条件 p,q是指向同一数据类型的指针 n是整型数据 有意义的赋值方式 p=q p=q+n、p=q-n (要求q指向数组) p+=n、p-=n (要求p指向数组) 注意避免数组越界 指针的运算说明 指针的运算还包括 指针运算 对指向数组的指针的下标运算 对指针变量的取地址运算 对指向结构体的指针的指向成员运算 除上述运算方式(包
您可能关注的文档
- 第8节 原子吸收光谱分析.ppt
- 第8节 JSP简介.ppt
- 第8节 自定义对象.pdf
- 第8节 编写问题域类.ppt
- 第8节 第2讲 触发器.ppt
- 第8节 定时器计数器.pdf
- 第8节 炔烃 碳链延长.ppt
- 第8节 原子结构.pdf
- 第8节 运算符重载.doc
- 第8节.Web窗体的数据控件.pdf
- 粤科粤教版科学二年级下册3池塘里的鲤鱼 课件(共23张PPT).pptx
- 粤科粤教版科学二年级下册10喷气小车 课件(共20张PPT).pptx
- 中学生主题班会 逐梦初中,共建美好--新初一开学班会 课件 (33张PPT).pptx
- Unit 2 Improving yourself Starting out课件(共18张,内嵌视频).pptx
- Unit 6 Lesson 36 Clean Cars课件+音频(共25张PPT) 冀教版八年级上册.pptx
- 中职英语 外研版《旅游英语视听说》 Hope to See You Again 课件(35张PPT).ppt
- 粤科粤教版科学二年级上册10会辨方向的玩具鸭课件(共22张PPT).pptx
- 粤科粤教版科学二年级下册8不倒翁 课件(共20张PPT).pptx
- Unit 2 We're Family! SectionA (1a-2a) 课件+内嵌音视频 人教版(2024)七年级上册.pptx
- What's the best movie theater? Section B (1a-1e)课件(2024版)人教版八年级英语上册.pptx
文档评论(0)