- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言——指针(simple)
莆田学院计算机教研室 2003年5月 指 针 绍兴文理学院自动化教研室 2011年4月 本讲主要内容 指针概述 地址· 指针· 指针变量 指针变量作为函数参数 指针与数组 数组、指针与函数调用 行指针 指针与函数 返回指针值的函数 一、指针概述 1.地址(address) P219 如果在程序中定义了一个“实体”(变量、数组、函数 ……),编译时系统就要给这些实体分配内存单元。 分配规则: 什么是内存单元“地址”? 内存单元是以字节为单位,每个字节都有一个编号(即“地址”)。 每个“实体”占用的内存单元是不同的。如: char a;int b;float c;int d[3];int max( ) 内存单元与地址 如何表示实体地址? 实体地址表示法 普通变量a,b,c —— a,b,c 数组d[3] —— d(数组名), d[0],d[1],d[2] 对二维数组,可用单下标法表示每行首地址。 如 对char x[3][4],可用x[0]、x[1]、x[2]分别表示其第一、二、三行的首地址。 函数max( ) —— max(函数名) “入口地址” 取地址运算符(适用于普通变量或数组元素) 2.指针(pointer) 实体地址的一种表示法(便于编程处理)。 指针是一种特殊的数据类型——存放的是某个实体的地址值。 3.指针变量 P221 存放“指针”(地址值)的特殊变量。 定义方法: 类型标识符 *变量名 如 int *a; char *b; float *c; 为什么要使用指针变量? C程序中访问(读写)变量有两种方式: 直接访问 (按名单预留的座位入座) 利用实体名访问变量。访问变量的过程—— 变量(实体)名→定义时分配的地址→变量值 好比“先坐再买票”看电影:来一个观众,分配一个空位给他去坐,并且还要在纸上记一个某人坐在哪里。这种方式对用户来说很方便(“直接就座”),但对系统来说,“找某人”就极不方便(间接:查名字→座号)。 间接访问 (先买票,后按号入座) 把变量地址先存放在“指针”中,再通过“指针”访问变量。 好比先买票(票—指针,座号—地址),再“按号入座”看电影。这种方式对用户来说属于“间接就座”,便对系统查找来说就很直接,且便于处理。尤其对于数组(团体),可通过指针简单自加或自减,对整个数组进行处理。 指针变量——不要谈”指”色变 指针是C语言学习中的一大难点。 难——难在概念。 首先——搞定*p 请看以下变量声明语句 int a,*p1; char b,*p2; a,b 普通变量(存放某个数值或字符) p1,p2 指针变量(存放某个实体的地址) 注意——不同的*p 以下程序中哪些语句是错误的? main() { int a,*p; a=3; p=3; /*或者 p=a;*/ p=a; *p=a; /*或者*p=3*/ } 有关*p的小结 变量定义时,*p表示定义了一个用来存放变量地址而非数据(数值、字符等)的指针变量。 程序中引用时,*p表示取指针变量p所指变量的值。 *p——并非就这么简单 *p的含义与p所指的对象有关 如果p被定义成指向普通变量的指针变量,则*p代表该变量的值。 如 int *p,a=5; p=a; 则*p代表变量a的值(5)。 如果p被定义成指向某个数组的指针变量,则*p代表该数组中某个元素的值。 如 int *p, a[3]={1,2,3}; p=a; 则*p代表数组a中某个元素。 看看两个例子 #include process.h main() { int a,b=10,*p; system(cls); p=b; a=*p+3; printf(a=%d,b=%d\n,a,b); } main() { int *p,a[12]={1,2,3,4,5}; clrscr(); p=a; for ( ;*p5;p++) printf(%d,*p); } p指向字符数组时的*p 如果p被定义成指向某个字符数组或某个字符串的指针变量,则*p代表某个字符。
您可能关注的文档
- 4第六课.ppt
- 6 成都实验室介绍.pdf
- 6 详细功能介绍(47-88).pdf
- 6课程观.ppt
- 78人教版九年级物理期中试卷2.doc
- 6 第六章 电抗器和避雷器.ppt
- Arc GIS的基本操作.doc
- ArcGis一数据处理.pdf
- BAKER讲义.doc
- BNSFaceIt数码人像采集识别系统操作手册.doc
- 上海海洋大学《海洋环境分析技术》课件-21化学发光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-20分子荧光分析法.pdf
- 上海海洋大学《海洋环境分析技术》课件-22色谱分离过程.pdf
- 上海海洋大学《海洋环境分析技术》课件-25气相色谱仪与固定液.pdf
- 上海海洋大学《海洋环境分析技术》课件-24色谱定性定量方法.pdf
- 上海海洋大学《海洋环境分析技术》课件-26气相色谱检测器.pdf
- 上海海洋大学《海洋环境分析技术》课件-29液相色谱固定相与流动相.pdf
- 上海海洋大学《海洋环境分析技术》课件-27气相色谱分离条件的选择.pdf
- 上海海洋大学《海洋环境分析技术》课件-28液相色谱仪器与类型.pdf
- 上海海洋大学《海洋环境分析技术》课件-3 原子光谱和分析光谱.pdf
最近下载
- 【课件】《危险化学品重大危险源监督管理暂行规定》解读.pptx VIP
- 桩基及围护技术标含施工方案.pdf VIP
- 小学写人记事类作文方法讲解(课件PPT;42页).pptx VIP
- 学校食堂餐饮服务投标方案(技术方案).doc
- 英剧剧本唐顿庄园台词本中英文对照精排版第一季第一集.pdf VIP
- [中级注册安全工程师考试密押资料]安全生产事故案例分析模拟281.docx VIP
- [中级注册安全工程师考试密押资料]安全生产技术模拟39.docx VIP
- [中级注册安全工程师考试密押资料]安全生产事故案例分析模拟42.docx VIP
- [中级注册安全工程师考试密押资料]安全生产事故案例分析模拟301.docx VIP
- [中级注册安全工程师考试密押资料]安全生产事故案例分析模拟73.docx VIP
文档评论(0)