版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 指针,7.1 指针的概念 7.2 指针变量 7.3 函数间传递地址值,7.1 概念,1.数据在内存中的存储方式: 按数据类型给在内存为其分配一定数量的存储单元(字节)。,2.内存单元的地址: 内存单元的编号,与变量名对应。,3.内存单元的内容: 即变量的值。,例如有定义: int a; char c; float x; 变量a,c,x的内存分配情况:,a,x,c,4.变量的“直接访问”方式: 按变量的地址(即变量名)存取变量值的方式。(见下图),间接访问方式示意图:,将变量的地址放在另一个内存单元中,先到另一个内存单元中取得变量的地址,再由变量的地址找到变量并进行数据存取(见下图)。,
2、5.变量的“间接访问”方式,内存用户数据区示意图:,变量pointer为指针变量,存放的是变量i的内存地址,我们说pointer指向i。,6.指针的概念: 一个变量的地址称为该变量的指针。,8.2 指针与变量,一. 指针变量的定义和指针变量的基类型,1. 定义方式: 类型标识符 *指针变量名;,float *p1; (定义了p1为指向实型变量的指针变量) char *p2; (定义了p2为指向字符型变量的指针变量),标识符前面的“*”,表示该变量为指针变量。但指针变量名是*后面的名字(不包括“*”)。 该指针所指向变量的类型成为指针变量的基类型。,3.说明,2. 指针变量的三要素: 指针变量的
3、基类型: 和其所指变量的类型一致; 指针变量的值:另一个变量在内存的地址; 指针变量的名字:起法同普通变量。,指针变量名=某一地址;,二.指针变量的赋值,方式1: 指针变量名=,方式2: 指针变量名=另一已经赋值的指针变量;,方式3: 通过调用库函数malloc和calloc在内存中开辟动态存储单元;,方式4: 还可以给指针变量赋NULL值。,例如: int i,*p,*q,*r,*t; p=,示意图,三.指针的运算,1.移动指针 对指针变量加上或减去一个整数、或通过赋值运算,使指针指向相邻的存储单元 在p+中,1不代表一个字节,而是一个存储单元,具体字节数由指针的基类型决定 2.指针的比较和
4、相减 相减得一整数,代表两指针所指存储单元之间相距的单元数,不是字节数。,3.两个运算符 *: 求其后内存地址中的内容 int *p1,*p2; a=100;b=10; p1= ,程序运行结果: 100,10 100,10,再例:由下列图(a)形式,,图(a),图(b),执行语句: p2= a=5;b=9; p1=,if (ab) p=p1;,p1=p2; ,p2=p; ,printf(a=%d,b=%dn,a,b); printf(max=%d,min=%dn,*p1,*p2);,-指向指针变量的指针. 定义形式: 类型 *变量名; 例如: int i,*p,*q; i=30; p=,四.指
5、针的指针,7.3 函数之间传递地址值,看下面的程序,int sum(int a, int b) return a+b; ,void add1(int a, int b, int c) c=a+b; ,void add2(int a, int b, int *c) *c=a+b; ,void main() int x=3,y=4,z=5; z=sum(x,y); printf(“sum:z=%dn”,z);x=3,y=4,z=5; add1(x,y,z); printf(“add1:z=%dn”,z); x=3,y=4,z=5; add2(x,y, ,考虑函数调用时, 三个函数的参数传递情况 内存中变量的值的变化情况,void swap1(int a, int b) int t; t=a; a=b; b=t; ,void swap2(int *a, int *b) int t; t=*a; *a=*b; *b=t; ,void main() int x=3,y=4; swap1(x,y); printf(“1:x=%d,y=%d”,x,y); swap2( ,再看下面的程序(同上例),函数传递参数的形式,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度出口企业出口货物报关单据与凭证管理合同3篇
- 二零二五年餐饮项目合伙经营合同范本3篇
- 2025年度智能化工厂租赁合同涉及土地使用权及配套设施4篇
- 二零二四年临时工劳动保障与劳动法实施合同3篇
- 专属2024版企业人力外包协议样本版B版
- 2024铝合金门窗生产与安装一体化工程合同3篇
- 2025年度企业级“师带徒”人才孵化项目合同3篇
- 专业劳务派遣协议样本2024版B版
- 街道党工委知识培训课件
- 2025年度商务办公空间租赁安全合同文本4篇
- GB/T 4167-2024砝码
- 老年人视觉障碍护理
- 《脑梗塞的健康教育》课件
- 《请柬及邀请函》课件
- 中小银行上云趋势研究分析报告
- 辽宁省普通高中2024-2025学年高一上学期12月联合考试语文试题(含答案)
- 青海原子城的课程设计
- 常州大学《新媒体文案创作与传播》2023-2024学年第一学期期末试卷
- 麻醉苏醒期躁动患者护理
- 英语雅思8000词汇表
- 小学好词好句好段摘抄(8篇)
评论
0/150
提交评论