- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]c语言教材第7章 指针
* 第七章 指针 * 0.本章内容 1 地址和指针的概念 2 变量的指针和指向变量的指针变量 3 数组与指针 4 字符串与指针 5 指向函数的指针和返回指针值的函数 6 指针数组和指向指针的指针 7 指针小结 * 1.地址和指针的概念 变量与地址 …... …... 2000 2001 2002 2005 内存 0 2003 i k 内存中每个字节有一个编号-----地址 程序中: int i; float k; * 1.地址和指针的概念 直接访问和间接访问 直接访问:按变量地址存取变量值 间接访问:通过存放变量地址的变量去访问变量 2000 2001 2002 2003 2004 2005 3001 – 5 +5 10 2000 ? ? –5 2000 直接访问 –5 间接访问 ? ? –5 3001 2000 ? –5 i x 显然,x与i是通过i的地址联系起来的,一个变量的地址—称为该变量的指针。因此,i的指针为2000,而存放地址(指针)的变量叫做指针变量。 如:x * 2.变量的指针和指向变量的指针变量 指针变量的定义: short *p1; float *p2; 该定义表示p1、p2是指针变量,p1准备用来存放整数单元的地址,p2准备用来存放实数单元的地址。 * 2.变量的指针和指向变量的指针变量 对象的地址 P *p 通常将指针与其所指向的对象这样表示:: 例如: 10 P a, *p a的地址 void main() { int a=10,*p; p=a; printf(“%d”, *p); } p中存放的是某个单元的地址,*p表示那个单元(对象)。 * 2.变量的指针和指向变量的指针变量 用于指针运算的运算符单目: 为了便于地址操作,C提供了两个专用运算符和*的运算符: 变量:取地址运算符 *(地址表达式):指针运算符 例如:int a=10,*p; p=a; 与*作用相反,级别相同,从右→左运算。使用*返回的是a的值,故可理解为*p是变量a的别名,即: printf(“%d”,*p);== printf(“%d”,a); * 2.变量的指针和指向变量的指针变量 指针的初始化: NULL(大写)是一个符号常量,在stdio.h文件中已定义。 例如:int *p, x; void *q=NULL; q中的地址值为0,p中是一个不确定的值,若当作地址值引用,这个地址中有可能存放的是系统重要数据,轻着破坏程序的运行,重着导致系统痪。 * 2.变量的指针和指向变量的指针变量 指针变量的赋值: 指针中只能存入由系统分配的地址,用户无权赋值,只能利用取地址 。 例: int x, *p1=x,*p2, sz[10]; p2=sz; p1=sz[2]; 注意: int *p=123; 错误 p=67; p1=(i+5); 错误 只能取变量的地址 p=100; ?p=a[0]; 错误 * 2.变量的指针和指向变量的指针变量 课堂练习: * 2.变量的指针和指向变量的指针变量 读程序 * 2.变量的指针和指向变量的指针变量 例题:交换两个数a,b的值 * 2.变量的指针和指向变量的指针变量 指针变量作为函数参数: 例题:编写一个函数实现两个数的交换 * 3.数组与指针 数组的指针:数组的起始地址。 数组元素的指针:数组元素的地址。 数组名可视为地址常量。 * 3.数组与指针 例如: int a[10]; int *pa; pa=a; (或pa=a[0]) 表明指针pa指向数组a 的首地址;此时,指针 对象*pa为a[0]; pa+n表示数组第n个数据的地址 即 pa+n=a[n] *(pa+n)是a[n] * 3.数组与指针 a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}}; 则a指向a数组第0
您可能关注的文档
- [计算机软件及应用]5PID参数的如何整定北京.ppt
- [计算机软件及应用]5详细设计说明书.doc
- [计算机软件及应用]7Java的基本可重用类.pdf
- [计算机软件及应用]8 9 视频AD_DA参数的观测、数字电视国际标准、节目码流和传输码流测试.ppt
- [计算机软件及应用]51CTO下载-mobile app security.ppt
- [计算机软件及应用]8 MATLAB在信号与系统中的应用.ppt
- [计算机软件及应用]ActionScript单词中文详细解释.doc
- [计算机软件及应用]ActiveMQ.pdf
- [计算机软件及应用]Adobe Flash Media Server 5 介绍与入门.doc
- [计算机软件及应用]ADO操作.ppt
- [计算机软件及应用]Cortex-M3_技术介绍.ppt
- [计算机软件及应用]C语言程序设计谭浩强第八章详细课后答案.doc
- [计算机软件及应用]CityEngine-Philadelphia example案例操作详解.doc
- [计算机软件及应用]DB2 基本概念.ppt
- [计算机软件及应用]diff2操作手册.doc
- [计算机软件及应用]Data021.ppt
- [计算机软件及应用]DS02_Algorithm Analysis.ppt
- [计算机软件及应用]dreamweaver 做网站设计全面解析7.ppt
- [计算机软件及应用]EBS_R12_金税设置.pdf
- [计算机软件及应用]Dweep Gold紫色小精灵白金珍藏版奖励关78关过关流程附图.doc
文档评论(0)